Я пытаюсь запустить свой код С++, введение которого в этот новый код привело к повреждению памяти, может ли кто-нибудь помочь мне понять, что может быть причиной этого. После вызова удаления я столкнулся с этой проблемой. Я также пробовал размещать newArgs[SZ] = '\0';
после каждого вызова strncpy
.
Ошибка говорит:
ПОВРЕЖДЕНИЕ КУЧИ ОБНАРУЖЕНО после нормального блока (# 274) по адресу 0X00C09600 и т. д.
int main(HINSTANCE hInstance, HINSTANCE hPrevInstance, char* argc, int nShowCmd){
MyClass *obj;
char args[] = " hello world";
int SZ = strlen(args);
int argsLength = 0;
if(argc != NULL)
argsLength=strlen(argc);
SZ+=argsLength;
char *newArgs = new char[SZ];
strncpy(newArgs, "",SZ);
if(argc != NULL)
strncpy(newArgs, argc,argsLength);
StrCat(newArgs,args);
obj = new MyClass(newArgs);
delete[] newArgs;
return 0;
}
SIZE
? Он используется, но никогда не объявлялся. - person Igor Tandetnik   schedule 14.11.2014argsLength
кSIZE
, а не кSZ
, поэтомуnewArgs
будет недостаточно большим. - person The Dark   schedule 14.11.2014int main(HINSTANCE hInstance, HINSTANCE hPrevInstance, char* argc, int nShowCmd)
Что это? - person drescherjm   schedule 14.11.2014{std::string newArgs = args; newArgs += argc; }
Вероятно, это то, к чему сводится весь этот код. - person PaulMcKenzie   schedule 14.11.2014WinMain
переименован вmain
через переключатель/ENTRY
по неясным причинам. - person Igor Tandetnik   schedule 14.11.2014