[問題] 關於struct和memory leak的問題(上一篇我也有打標題啦!)

看板C_and_CPP作者 (史波趣)時間13年前 (2012/09/04 00:51), 編輯推噓3(306)
留言9則, 7人參與, 最新討論串1/1
大家好, 小弟一直對於記憶體管理這部分總是不清楚背後運作的方式, 想跟各位 請教一下;希望大家不吝指教~ 我開發的平台是AIX, 想在上面寫一個類似agent的程式, pseudocode如下: struct numbers { int number1; double number2; }; void main() { while (signl != SIGKILL) { numbers a; getNumbers(&a); cout << a.number1 << endl; cout << a.number2 << endl; sleep(timeInterval); } exit(-1); } void getNumbers(numbers* xx) { xx.number1 = from sensor's value. xx.number2 = xx.number1++; } 我想請教的問題如下: 1.struct變數儲存的位置是stack? 和class new的方式儲存的位置差異是? 2.上面這種agent應該滿常見的, 書上寫說離開block之後就會被free掉, 可是如果變數 一直keep在block內的話, 應該如何管理, 才能把記憶體回收掉? 記憶體又是什麼時候 才會回收? 以class來說的話, 是free的當下就立刻回收嗎? 3.要如何判斷使用的記憶體已歸還給OS? 我使用getrusage(RUSAGE_SELF, &rus);方法 能正確抓到程式本身已使用的記憶體嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.38.81.250

09/04 01:11, , 1F
想回覆這篇文章但覺得講清楚又是一大篇...傷腦筋XDDD
09/04 01:11, 1F

09/04 09:13, , 2F
嗯,去學asm比較能有全面性的理解
09/04 09:13, 2F

09/04 10:41, , 3F
我滿希望james回這篇! new是ˇheap
09/04 10:41, 3F

09/04 10:59, , 4F
存stack或heap和struct或class無關 和動靜態配置有關
09/04 10:59, 4F

09/04 11:23, , 5F
指標 xx 用 . 還滿特別的
09/04 11:23, 5F

09/04 11:36, , 6F
pseudo code 就不要太計較啦 XD
09/04 11:36, 6F

09/04 23:02, , 7F
謝謝大家的回覆, xx用.是我寫錯了, 還好大家都看的懂~^^
09/04 23:02, 7F

09/04 23:03, , 8F
換個方式問好了, 這種一直live的程式用struct如何管理變數?
09/04 23:03, 8F

09/04 23:04, , 9F
另外,getrusage(RUSAGE_SELF, &rus)可以抓的到記憶體用量嗎
09/04 23:04, 9F
文章代碼(AID): #1GHE0lRs (C_and_CPP)