我在C(malloc)和C++(新)下面的代碼。我很困惑爲什麼C版本不工作。 錯誤 - 內存分配慘敗前塊在malloc和新的堆初始化混亂
Exited: ExitFailure 127.
是否有這樣做的任何問題。
C++版
#include <iostream>
using namespace std;
int main()
{
char *p=new char[20];
strcpy(p,"Hello");
p=(char*)"Hi";
cout<<p;
delete p;
}
C版
#include <stdio.h>
# include <malloc.h>
# include <string.h>
int main()
{
char *p=(char*)malloc(50);
strcpy(p,"Hello");
p=(char *)"Hi";
printf("%s",p);
free(p);
}
兩者是不正確的。你必須施加「嗨」的事實應該是線索。 – 2014-08-30 16:47:56
這兩個版本都不正確。 'p =(char *)「Hi」;'使'delete'或'free()'的行爲未定義。 – 2014-08-30 16:48:34
還要注意,在delete中使用'new []'是未定義的行爲,所以即使你修復了指針重新分配,它仍然是錯誤的代碼。 – chris 2014-08-30 16:53:05