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