C/C++中數據的存儲


學java時了解到不同的數據在系統中存儲的位置不一樣,有的存在棧里,有的存在堆里。學C/C++時沒注意過這個,最近學數據結構時遇到了問題:在定義一個結構體的指針時,系統如何給它分配的空間?從而讓我想去了解C/C++中數據是如何存儲的。同時在學遞歸時就一直聽到系統棧這個詞,這次可以一並學習。

在CSDN中了解到C語言程序運行時內存的分類方式,有四大類或五大類兩種。在其中我要關注的是堆區和棧區。堆區用於臨時申請,棧區用於函數中的臨時變量的存儲。一般來說堆區無限大,棧區有一定大小。

在定義一個結構體的指針時,系統如何給它分配的空間?這個我沒看到,不過經過我在dev中的代碼測試,定義的結構體指針分配了8個字節,和結構體的實際大小不同,這個指針仍然存儲的是地址。經測試,指針定義時系統初始化讓指針指向NULL,這時就不能令p->data為某值,而需先令指針指向某塊分配了結構體空間的區域。


免責聲明!

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



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