首页 > 解决方案 > 在 C 中调用 malloc 时初始化程序无效?

问题描述

我在这一行中不断收到一个无效的初始化程序错误:

StackObject_t new = (StackObject_t*)malloc(sizeof(StackObject_t));

StackObject_t 类型定义如下:

typedef struct stackObject* pStackObject_t;
typedef struct stackObject
{
    void* obj;
    pStackObject_t next;
} StackObject_t;

这是我得到的确切错误: 错误信息

标签: cmalloc

解决方案


首先,您不应该转换 malloc 的结果,因为它可以隐藏错误并且 C 会自动转换void*为正确的指针类型。其次,您的问题是因为您拥有StackObject_t变量的类型,但 malloc 返回 a StackObject_t*。您可以通过将您的线路更改为以StackObject_t* new = ...使类型匹配来解决此问题。


推荐阅读