Je veux copier un objet et l'envoyer sur le réseau avec winsock, mais il y a un problème. Je détruis la pile si je copie un objet dans un tableau de caractères sur le tas. Voici mon code:pile corrompue après memcpy
testclass backditup; //This is an object with information
testclass restorenaarhier; //I will copy it to this object
backditup.setvalues(100,100);
restorenaarhier.setvalues(0,0);
char * dataholder = new char[sizeof(backditup)]; //This is the data holder
ZeroMemory(&dataholder,sizeof(backditup));
memcpy(&dataholder,&backditup,sizeof(backditup)); //Save it to the char[]
//Sending it over the network
//resieving the object
//Store the data on the same object
memcpy(&restorenaarhier,&dataholder,sizeof(restorenaarhier));
//deleting the data holder
ZeroMemory(&dataholder,sizeof(dataholder));
delete dataholder;
//output the code
restorenaarhier.echo();
Le code fonctionnera correctement, mais quand je le compiler en mode débogage j'obtenir à la fin:
http://imageshack.us/photo/my-images/839/errormnr.png/
Run-Time Échec de la vérification # 2 Stack autour de la variable 'détenteur de données' était corrompu.
Quelqu'un peut-il m'aider?
Changez char * dataholder = nouveau char [sizeof (backditup)]; 'en' char * dataholder = nouveau char [sizeof (backditup)](); 'et il n'y a aucun besoin de 'ZeroMemory'. Ce n'est pas C, c'est C++, vous devriez donc utiliser des idiomes C++. – ildjarn