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

C語言塊內變量回收問題

編輯:關於C語言

之前有一個錯誤認識,錯誤的認為局部變量的回收是發生在函數返回時。其實在塊結束時塊內使用的內容就會被回收了。

以下的實例說明了問題

 * p[ ( i = ; i < ; ++ item == &, p[],p[, *p[],*p[]);

某次的輸出(具體的內存地址會有不同,但是依然會發現p[0]與p[1]指向了同一個地方)

p[]=000000000023FE2C p[]=*p[]= *p[]=

 

這個問題的發現過程是使用struct時懶得手動釋放內存,就試圖將其都放在棧中,想等函數退出時令其自動回收。結果在for塊中定義的變量會不斷被回收,所有的都在同一個地址處。被struct封裝一下,問題會更具有迷惑性。

typedef  main( argc,   ** p[ ( i = ; i < ; ++== &, p[],p[, p[]->item,p[]->


輸出如下

p[]=000000000023FE20 p[]=]->item= p[]->item=

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved