[英]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.