C- malloc不施放到结构



我有以下简单代码:

结构的第一个用法f工作正常,但是我无法使用 n malloc-我遇到一个错误,因为它无效*无法分配给myValues*。我知道我不应该施放马洛克,那我该怎么做?怎么了?

确切的错误:

a value of type "void *" cannot be assigned to an entity of time "myValues *"

#include <stdio.h>
#include <stdlib.h>
typedef struct values
{
int a;
char c;
void *pv;
values *next;
} myValues;
int main(){
    myValues f;
    myValues *n = malloc(sizeof(myValues));
}

很明显,该程序被编译为C 程序。否则,编译器将发出错误,即在结构定义中未声明名称values

typedef struct values
{
int a;
char c;
void *pv;
values *next;
^^^^^^ 
} myValues;

如果是这样,您必须写

myValues *n = ( myValues * )malloc(sizeof(myValues));

因为类型void *的指针不能隐式转换为另一种类型的指针。

(或者您需要将程序完全重写为C 程序,例如,将函数malloc的调用替换为使用操作员new。)

,或者您应该将程序编译为C程序。在这种情况下,您必须写

typedef struct values
{
int a;
char c;
void *pv;
struct values *next;
^^^^^^^^^^^^^ 
} myValues;

相关内容

  • 没有找到相关文章

最新更新