c中malloc申請堆空間使用及案例

2021-08-06 08:33:56 字數 1115 閱讀 6694

c中malloc申請堆空間

void test22() 

memset(pr,0,sizeof(int)*128);//初始化空間為0

free(pr);//釋放空間

pr = null;

}

具體使用以檔案讀寫為例,把檔案讀到記憶體中再寫入另乙個檔案

void test23() 

if (!mytf)

//計算檔案大小

if ((fseek(myf,0l, seek_end)))

size = ftell(myf);

if (size == 0)

printf("\nget file size:%x", size);

//申請空間

pr = (char *)malloc(sizeof(char) * size);

if (pr == null)

//初始化空間

memset(pr, 0, sizeof(char) * size);

//定位指標到開頭

fseek(myf, 0l, 0l);

//乙個個字元寫入記憶體

prr = pr;

while (++i <= size)

//或者直接二進位制寫入記憶體

i = 0;

i = fread(pr,size,1,myf);

printf("\nread file date number:%x", i);

//指標回到首位址

pr = prr;

printf("\nget file date location:%x", prr);

i = 0;

//二進位制寫入檔案

i = fwrite(pr, size, 1, mytf);

printf("\nwrite file date number:%x",i);

printf("\nput ok !");

//釋放記憶體關閉檔案

free(pr);

pr = null;

prr = null;

fclose(myf);

fclose(mytf);

}

C語言學習筆記 堆區空間申請 一

函式的原型 void malloc size t size int p int malloc 4 這樣的一條語句即為申請乙個4位元組的int型別的堆區空間,並且定義乙個指標變數p指向這個空間的首位元組的位址 其中的4當然可以換成sizeof int 如果輸入的是小數,也會被系統轉換為整數,所以還是輸...

C 語言中記憶體分割槽中的棧空間和堆空間

在c語言中,記憶體分配的方式不同常常也會影響到程式的執行,所以理解變數等存在的記憶體區別是很有必要的。c語言中的三種記憶體分配方式如下 從靜態儲存區域分配 在棧上分配 從堆上分配 棧 是由編譯器自動分配和釋放的,即在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元將...

c 中無名命名空間的使用

突然使用到無名命名空間,查詢後,記錄 命名空間是程式設計者命名的記憶體區域,程式設計者根據需指定一些有名字的空間域,把一些全域性實體分別存放到各個命名空間中,從而與其他全域性實體分隔開。通俗的說,每個名字空間都是乙個名字空間域,存放在名字空間域中的全域性實體只在本空間域內有效。名字空間對全域性實體加...