c - 在 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;
解决方案
首先,您不应该转换 malloc 的结果,因为它可以隐藏错误并且 C 会自动转换void*
为正确的指针类型。其次,您的问题是因为您拥有StackObject_t
变量的类型,但 malloc 返回 a StackObject_t*
。您可以通过将您的线路更改为以StackObject_t* new = ...
使类型匹配来解决此问题。
推荐阅读
- powershell - 使用 Powershell 删除相似的文本行
- c# - 如何在 C# 中使用 Mongo 的 Aggregate 框架在列表字段中累积项目?
- c# - C# DataGridView 添加数据不适用于特殊字符列标题
- rust - Rust - shared_memory crate 返回 MapOpenFailed(2) - 怎么办
- pytest - 使用 pytest 测试 Django 干净表单方法的正确方法
- python - OpenCV相机捕捉到没有光
- c++ - 是否有任何用于移动设备的 C++ 图形库?
- flutter - Flutter Cupertino 开关
- node.js - 是否有用于 Nest.js 的 Open API 代码生成器的模块
- python - 将股票指标添加到 Pandas DataFrame - ValueError:系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或