#include #include #include void print_arr(int *buf, int n)
}int main() ; //棧中陣列
// void *malloc (size_t __size)
char *p1 = malloc(sizeof(char) * 1000);
free(p1);
int *p = malloc(sizeof(int) * 100); //在堆中申請記憶體,大小為100個int,當陣列用
memset(p, 0, sizeof(int) * 100); //初始化
int i;
for (i = 0; i < 100; ++i)
print_arr(p, 100);
free(p);
}
#include #include //既要申請記憶體,又要有變數指向該記憶體,這樣此時有效的,缺一不可。
//記憶體釋放與否 vs 作用域規則 是兩碼事
//只不過棧中變數隨作用域具有一致性,出了作用域,棧記憶體也釋放了
//而堆中變數出了作用域,變數失效,但堆記憶體若沒有手動釋放,則依然存在
//嚴重錯誤
void getheap(int *p)
//改正,利用二級指標
void getheap1(int **p)
int main7()
//錯誤,不能將乙個棧變數的位址通過函式的返回值返回,函式執行結束(出了作用域),棧位址就自動釋放了,相當於野指標
int *geta()
//正確,可以通過函式的返回值返回乙個堆位址,但記得,一定要free
int *geta1()
//正確,a在靜態區,不用free
int *geta2()
int main6()
C C 筆記 記憶體四區模型
作業系統給c c 編寫的程式分配記憶體,通常將分配的記憶體劃分為以下四個區域 用於存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。用完由作業系統自動釋放,一般是由編譯器自動分配釋放的。棧向下生長,棧分配的位址越來越小。動態分配給程式的記憶體區域,由程式設計師手動釋放,若程式設計師...
記憶體四區專題
程式的記憶體四區模型 1.作業系統把物理硬碟 load到記憶體中 2.作業系統把c 分成四個區 3.作業系統找到main函式入口執行 4.在被呼叫函式裡面malloc的記憶體,首位址傳給別呼叫哪個函式有兩種方法 a.return b.指標做函式引數 5.主呼叫函式分配的記憶體 堆 stack 全域性...
1 記憶體四區
資料型別的概念 型別 是對資料的抽象,型別相同的資料有相同的表現形式 儲存格式以及相關的操作。程式當中使用的所有資料都必定屬於某一種資料型別。資料型別的本質 資料型別可以理解為建立變數的模具,是固定記憶體大小的別名。資料型別為編譯器預算物件 變數 分配指定的記憶體空間大小。資料型別的別名 inclu...