程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言問答 >> 問個C語言關於free的小問題

問個C語言關於free的小問題

編輯:C語言問答

問個C語言關於free的小問題

void Test(void)
{
char *str = (char *) malloc(100);
strcpy(str, “hello”);
free(str);
printf(str);
}
}
函數運行結果為將“hello”打印出來了。
問下把hello拷貝到了*str指向的內存後,接著就把*str指向的內存釋放了,為什麼最後還能打印出“hello”呢?
我認為*str所指向的、保存hello的內存已經free(不存在)了,所以hello也不應該被打印出來。

void Test3(void)
{
char *str = (char *) malloc(100);
char *tmp = strcpy(str, "hhhhello");
// char *ttt = "sss";
// char *tmp = str;
free((void *)str);
printf("%s\n", tmp);
if(str != NULL)
{
// strcpy(str, "-> world\n");
printf(str);
}
// printf(str);
printf("%s\n", tmp);
}

最佳回答:

釋放掉了內存,但是內存沒有清空,數據還在那個地方,指針還指向那個地方,過一會這段內存就會被內存分給別人了,到時候就打印不出來了。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved