当我尝试为我的整数结构分配一些内存时,我收到了这个错误。
typedef struct _values {
random ints;
} values;
我已经尝试了以下几行,但我的编译器不喜欢它。如何修复错误?
values v;
v = malloc(sizeof(values));
当我尝试为我的整数结构分配一些内存时,我收到了这个错误。
typedef struct _values {
random ints;
} values;
我已经尝试了以下几行,但我的编译器不喜欢它。如何修复错误?
values v;
v = malloc(sizeof(values));
您忘记在 之后values
和之前添加星号 (*)v
以将其标记为指针:values *v;
您现在设置它的方式,v(不带星号)被定义为堆栈变量,并将在堆栈上分配并在函数结束后丢弃。它的类型将是简单的values
。
malloc
用于在堆上分配内存并返回指向内存的指针。正弦函数无法知道它作为类型返回的void *
类型-这会给您带来错误-您试图将void *
类型分配给struct
编译器无法执行的类型,编译器也无法找到合法的可以解决问题的演员表。
在这种情况下你不需要malloc
记忆;该行values v;
已经分配了内存(“在堆栈上”)。当您离开当前范围时,它将自动释放。
如果您真的想在“堆上”分配内存,以便它在当前范围之外持续存在,您需要v
成为一个指针;那是:
values *v;
v = malloc(sizeof(values));
完成后记住free
它。
values v;
这是在堆栈上分配的结构的一个实例。
v = malloc(sizeof(values));
malloc 返回一个void*
指针,编译器不允许您将指针分配给实例。
您需要声明一个指针,然后将 malloc 返回指针分配给它。
类似的东西
值 *v = NULL;
v = malloc(sizeof(values));