任何人都可以幫助我,爲什麼我在嘗試釋放分配的內存時收到錯誤消息:檢測到堆損壞。 CTR檢測到應用程序在堆緩衝區結束後寫入內存。C++ new/delete和char *
char *ff (char *s){
char *s1 = new char [strlen(s)];
strcpy(s1, s);
return s1;
}
int _tmain(int argc, _TCHAR* argv[])
{
char *s = new char [5];
strcpy(s, "hello");
char *s2 = ff(s);
delete []s; // This works normal
delete []s2; // But I get an error on that line
return 0;
}
顯然,這僅僅是一個鍛鍊和在真實設置你將使用'std :: string'來代替,對吧? –
@MatthieuM。絕對正確。我不允許使用std :: string; – user1448906