我有以下結構,並試圖使用malloc來動態創建一個新的對象。它似乎現在工作與object_ptr obj_ptr1 = malloc(sizeof(object_ptr));這隻會將object_ptr的指針大小賦給obj_ptr1?但在這種情況下,你如何分配原始struct _object_t的大小?如何在指針上正確使用malloc?
typedef struct
{
int struct_id;
void *(*function)(void *);
int status;
} _object_t;
typedef struct _object_t* object_ptr;
/* create a new object */
object_ptr obj_ptr1 = malloc(sizeof(object_ptr));
通過將指針聲明爲指針並通過[*** not *** cast the 'malloc()']的返回值(http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc/605858#605858)。 – 2014-02-10 23:50:07
編輯完成後:現在它是一個指針,但仍然分配了錯誤的大小。你正在分配一個指向'struct _object_t'的指針的大小。也許你應該使用更多的名字,比如'struct object_t'和'object_ptr'。 – Nabla
@chux不,它不是。 – 2014-02-11 00:00:31