-2
陣列的可用內存我有以下結構:分配和結構
typedef struct
{
char *name[10];
char *msg[100];
} Log;
我怎樣才能擺脫日誌結構的名稱和味精陣列?我知道free只用於動態分配,動態分配在結構中不起作用。我可以做什麼?
Tryed這一點,但給錯誤:
typedef struct
{
char *name[] = (char *)malloc(sizeof(char) * 10);
char *msg[] = (char *)malloc(sizeof(char) * 100);
} Log;
誰能幫我? 謝謝!
您已將此標記爲C++,但代碼肯定是C.您要在哪一個答案? – TartanLlama 2014-09-10 13:54:51
取決於。首先,'char * x []'是一個char-ptr數組。 'char * name [10]'分配10個字符,這不是你想要做的。 'typedef struct {char name [10]; char msg [100];} Log;'將這些字段作爲內聯分配給結構('sizeof(Log)> = 110')。否則,你需要爲結構提供一個init和清理函數。就個人而言,在這種情況下,我只讓用戶與句柄交互,而不直接與結構交互。 – IdeaHat 2014-09-10 14:01:24
'sizeof(char)'是每個定義1的,所以不要寫它。此外,[不要施放malloc(和朋友)]的結果(http://stackoverflow.com/q/605845)。 – Deduplicator 2014-09-10 14:06:11