#include <iostream>
#include <string.h>
using namespace std;
void newBuffer(char* outBuffer, size_t sz) {
outBuffer = new char[sz];
}
int main(void) {
const char* abcd = "ABCD";
char* foo;
foo = NULL;
size_t len = strlen(abcd);
cout<<"Checkpoint 1"<<endl;
newBuffer(foo, len);
cout<<"Checkpoint 2"<<endl;
cout<<"Checkpoint 2-A"<<endl;
memset(foo, '-', len);
cout<<"Checkpoint 3"<<endl;
strncpy(foo, abcd, len);
cout<<"Checkpoint 4"<<endl;
cout << foo << endl;
int hold;
cin>>hold;
return 0;
}Accédez à l'emplacement d'écriture de violation 0x00000000. fonction memset émet
Ce programme se bloque entre checkpoint 2-1 et 3. Ce qu'il essaie de faire est de définir le tableau de caractères foo au caractère « - », mais il échoue à cause d'un accès problèmes. Je ne comprends pas pourquoi cela arrive. Merci beaucoup d'avance!
À moins que ce soit une question de jouet/éducation: Un autre excellent exemple pourquoi vous devriez utiliser 'std :: string' ou' std :: vecteur' pour des choses comme ça en C++! –