結構體指標malloc

2022-03-27 06:22:11 字數 532 閱讀 7204

有如下結構體型別:

typedef struct

test, *ptest;

定義乙個結構體指標,結構體指標指向的元素buffer指向32位元組的字串:

ptest pdata;
pdata = (test *)malloc(sizeof(test) + 32);
此時pdata指向的記憶體空間分配如下:

如果需要讀寫buffer指向的空間內容,需要給buffer指標賦值:

pdata->buffer = (uint8_t *) pdata + sizeof(test);
此時便可以對buffer進行讀寫操作;

完整例子:

typedef struct

test, *ptest;

ptest pdata;

int main()

為什麼結構體指標需要malloc申請空間

例如此時 int init struct node head 結構體指標 初始化 newnode value 0 newnode next null head newnode 如果定義乙個結構體型別的普通變數,可以不malloc動態申請記憶體,cpu會為這個結構體變數分配記憶體 如果定義的是乙個結構...

C語言 malloc 為結構體成員指標申請記憶體

問題 當乙個結構體的成員為指標型別時,為這個結構體申請記憶體時,並不會給指標成員分配記憶體。程式如下 include include typedef struct example example t int main int argc,char ar printf p n exam printf p...

結構體指標中包含結構體指標

將c 轉化為c的過程中,一些c 的特性無法使用 類內私有變數在類內公共函式中使用,轉化為c的時候選擇用malloc的方式,申請一段記憶體空間去儲存它,在函式中傳指標形參去操作這些變數。這時候遇到乙個問題,結構體中包含了另乙個結構體的指標,這導致了我malloc的時候,另乙個結構體中的記憶體空間沒有申...