Der folgende Code löst eine Heap-Beschädigung aus, wenn versucht wird, lpSubKey freizugeben.Warum verursacht der angegebene Code einen Heap-Fehler?
Was genau läuft schief?
EDIT: Der Fehler wird ausgelöst, auch wenn dies der einzige Code in main() ist, so dass der Fehler nicht an anderer Stelle auftritt.
EDIT2: Aktualisierung des Codes, um die akzeptierte Antwort widerzuspiegeln, hat das Problem gelöst. Ich sehe immer noch nicht, warum es überhaupt einen Fehler gab. Selbst wenn wcscat_s keinen Schutz bot, weil len nicht den korrekten Wert hatte, sollte mein Puffer groß genug sein, um beide Zeichenfolgen zu enthalten.
#define DRIVER_NAME L"TEST"
#define SUB_KEY L"System\\CurrentControlSet\\Services\\"
size_t len = wcslen(SUB_KEY) + wcslen(DRIVER_NAME) + 1;
LPWSTR lpSubKey = calloc(len, sizeof(WCHAR));
wcscat_s(lpSubKey, len, SUB_KEY);
wcscat_s(lpSubKey, len, DRIVER_NAME);
free(lpSubKey);