malloc在函數內分配內存問題


malloc函數用法可參考:C語言中 malloc函數用法 及 malloc函數

 

 

代碼:

void fun(char * p) { p=(char *)malloc(100); } void main() { char *p; fun(p); char s[]="hello world"; strcpy(p,s); cout<<p<<endl; }

找出代碼錯誤之處。

 

不能通過這樣的方式申請動態內存,申請的內存首地址無法通過形參傳遞出去(形參只做實參的值復制)。

VS2010下運行,出現錯誤:Run-Time Check Failure #3 - The variable 'p' is being used without being initialized.

將main函數中 char *p; 修改為 char *p=NULL; 依舊是錯誤的。

【XXXXX中的 0x100cd2e9 (msvcr100d.dll) 處有未經處理的異常: 0xC0000005: 寫入位置 0x00000000 時發生訪問沖突】

 

要正確申請動態內存,可將程序修改為:

void main() { char *p;//char *p=NULL;
    p=(char *)malloc(100); char s[]="hello world"; strcpy(p,s); cout<<p<<endl;
free(p); }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM