#define crt_secure_no_warnings
#include
#include
#include
#include
#include
int main0101()
//開闢堆空間
int*p=(int*)malloc(sizeof(int));
printf("%p\n",p);
printf("%p\n",*p);//這裡沒有賦值,是亂碼
//使用堆空間
*p=123;
printf("%d\n",*p);
//釋放堆空間;並不是直接就把堆記憶體進行釋放掉,而是做乙個標識;然後等系統需要這塊記憶體的時候,發現是空閒的,就會進行釋放
free(p);
//可以給指標變數設定為空指標
//p=null;
//釋放後列印位址;這裡的p為野指標
printf("%p\n",p);
//釋放後修改值;這裡操作野指標不會報錯
*p=456;
printf("%d\n",*p);
return exit_success;
//結果
//開闢10個int 型別大小的堆空間
int*p=(int*)malloc(sizeof(int)*10);
//通過指標操作堆空間
for(int i=0;i<10;i++)
p[i]=i;
for(int i=0;i<10;i++)
printf("%d ",*(p+i));
//釋放堆空間
free(p);
if(!p)//p==null;
printf("程式異常\n")
return -1;
return 0;
//結果
棧空間與堆空間
出處 以下為正文 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放,存放函式的引數值,區域性變數的值等,其操作方式類似於資料結構的棧。2 堆區 heap 一般是由程式設計師分配釋放,若程式設計師不釋放的話,程式結束時可能由os 值得注意的是他與資料結構...
堆空間與棧空間的區別
1.棧區 stack 又編譯器自動分配釋放,存放函式的引數值,區域性變數的值等,其操作方式類似於資料結構的 棧。2.堆區 heap 一般是由程式設計師分配釋放,若程式設計師不釋放的話,程式結束時可能由os 值得注意的是他與 資料結構的堆是兩回事,分配方式倒是類似於資料結構的鍊錶。3.堆和棧的區別 1...
vector記憶體的開闢與
1.vector的記憶體增長vector其中乙個特點 記憶體空間只會增長,不會減小,援引c primer 為了支援快速的隨機訪問,vector容器的元素以連續方式存放,每乙個元素都緊挨著前乙個元素儲存。設想一下,當vector新增乙個元素時,為了滿足連續存放這個特性,都需要重新分配空間 拷貝元素 撤...