我每次讀取文件時都嘗試讀取使用不同長度字節的二進制文件。獲得值後,我嘗試將字節轉換爲char*
。刪除用於字節轉換的char *
我創建了一個簡單的代碼如下:
//This code is compiled in Visual Studio 2010
typedef unsigned char BYTE;
BYTE *s;
s = new BYTE[3]; // I read 2 bytes from the file, I add +1 to reserve NULL
s[0]= 'a'; s[1]='b';s[2]=NULL; //just an example I get 2 bytes from file
char* b;
b = new char(sizeof(s));
strcpy(b,(char*)s);
s[0]='x';
cout << s <<"--"<< b<< "--"<< endl;
delete[] s;
delete[] b;
cin.get();
return 0;`
但是,代碼生成錯誤「堆損壞檢出」。當我刪除該行,delete[] b;
該程序運行良好。但是,如果問題可能出現,我不確定。有人會解釋一下嗎?如果我刪除delete[] b;
會造成內存泄漏嗎?任何建議,以改善我的代碼?
對不起。這是一個錯字,它應該是's'。 – user1917485
您可以隨時編輯您自己的帖子,方法是點擊它下面的「編輯」鏈接按鈕。 :) – ForceMagic