簡體   English   中英

在 C 中的結構上使用 malloc 后,數組中的默認值是多少

[英]What's the default value in an array after using malloc on a struct in C

假設我有這個代碼:

typedef char BLOCK[10];
typedef struct {
  BLOCK block;
}Object;

我這樣做:

Object* obj;
obj = malloc(sizeof(obj));

我的問題:
數組“塊”的每個單元格中是否都有默認值?

假設您的代碼中的“錯誤”只是一個錯字(它應該是obj = malloc(sizeof(*obj));或者您將分配足夠的空間來保存指針),那么標准中沒有任何內容可以指定分配的數據將初始化為什么。

如果你想要定義初始化行為,那么你可以使用calloc

obj = calloc(1, sizeof(*obj)); // Note: sizeof(obj) = pointer size but sizeof(*obj) is struct size

這會將所有分配的字節初始化為零。

malloc() 不會初始化分配的 memory。 man malloc

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM