首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C/C++ Debug 正常 Release 崩潰:malloc 分配大小錯誤

     編輯:程式設計疑難解答

問題代碼片段

InText head = (InText)malloc(sizeof(InText)); // 錯誤
head->Text = (char*)malloc(10*sizeof(char)); // 錯誤

錯誤分析

  • InText 是 Node1* 指針類型,sizeof(InText) 返回指針大小(4/8 字節),而非結構體大小。導致分配內存不足,訪問越界。
  • head->Text 定義為 char*,但代碼寫成 (char)malloc(...) 強轉為 char 而非 char*。

正確寫法

InText head = (InText)malloc(sizeof(Node1)); // 分配結構體大小
head->Text = (char*)malloc(10 * sizeof(char)); // 正確指針類型

調試差異原因

Debug 模式下內存佈局較寬鬆,越界可能暫時不崩潰;Release 優化後內存緊湊,越界立即觸發崩潰。VC6 編輯器對非標準代碼容錯較高。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved