malloc函式的問題

2021-05-26 01:06:32 字數 514 閱讀 8762

首先我們看看以下**:

#include

#include

#include

#define size 0x40000 /*十六進製制的表示方法,等於十進位制262 144,你們要習慣用十六進製制,因為兩個十六進製制剛好是乙個位元組*/

int main()

就是以上**,你們使用vc和turbo c 分別編譯,看生成檔案的大小是否相同。

如果你的turb c不是修改過的,turboc生成的檔案是「0」位元組

而vc生成的檔案是262144位元組。

問題出在**呢?就是vc和turbo c 的malloc 函式不同。turbo c 中的malloc(int) 函式只能傳人2個位元組的引數,所以0x40000中的高位0x4因為溢位而沒有傳入,所以獲得「0」位元組的檔案。這裡要注意turbo c中的malloc 函式最大分配0xffff就是65535個位元組的記憶體,同理如果各位在以後開發過程中,出現這樣的情況,可以驗證是否是編譯器提供的函式不同所致。vc malloc的情況你們自己動手查檢視。

函式內部使用malloc問題彙總

在函式裡malloc,如何將位址傳到函式外?一種是用return把位址帶出來,也可以用二級指標將函式內的位址帶出 func struct node p 這個是對指標p指向的節點進行修改 func struct node p 這個是對p指標本身進行修改 一般會改變p的指向 include includ...

malloc函式 new和malloc的區別

1 申請的記憶體所在位置 new操作符從自由儲存區上為物件動態分配記憶體空間,而malloc函式從堆上動態分配記憶體。自由儲存區是c 基於new操作符的乙個抽象概念,凡是通過new操作符進行記憶體申請,該記憶體即為自由儲存區。而堆是作業系統中的術語,是作業系統所維護的一塊特殊記憶體,用於程式的記憶體...

malloc 函式的使用

c語言中malloc是動態記憶體分配函式。函式原型 void malloc unsigned int num bytes 引數 num bytes 是無符號整型,用於表示分配的位元組數。返回值 如果分配成功則返回指向被分配記憶體的指標 此儲存區中的初始值不確定 否則返回空指標null。void 表示...