【发布时间】:2013-05-25 15:22:05
【问题描述】:
我的代码在这里。
struct process *init_process (char *programName, int startTime, int cpuTime) {
struct process *proc;
proc = (malloc(sizeof(struct process)));
if (proc == NULL) {
printf("Fatal error: memory allocation failure.\nTerminating.\n");
exit(1);
}
proc->programName = programName;
proc->cpuTime = cpuTime;
proc->startTime = startTime;
proc->next = NULL;
return(proc);
};
编译器在第 3 行显示“错误:从‘void*’到‘process*’的无效转换”。 我尝试使用 process*(malloc(sizeof(struct process))) 进行类型转换,但编译器这次说 'error: expected primary-expression before'*' token'。
谁能帮我解决这个问题?
【问题讨论】:
-
try proc = (struct process *)malloc(sizeof(struct process));
-
您不需要从
malloc()转换返回值。你能发布 struct pls 的定义吗? -
您正在使用 C++ 编译器。要么编写 C++ 代码,要么切换到 C 编译器。
-
@Jimbo:从
void*到其他指针类型的隐式转换在 C 中有效,但在 C++ 中无效。 OTOH a;在函数定义后不是有效的 C 但有效的 C++。 -
我会考虑使用 calloc() 而不是 malloc()。还可以考虑将 process_init() 重命名为 process_new() 或 process_alloc() 以明确它分配内存。
标签: c++