为什么以下代码块不起作用?
int *p1 = malloc(128);
int main(void) {
char *p2 = malloc(128);
}
全局变量的初始化器必须是常量,所以第一个malloc
会导致编译时错误。
您不能使用 malloc 在这样的代码块之外初始化 p1 ,只需像 p2 一样在 main 内部执行
您不能在全局变量的初始化中调用函数。这是它抱怨的那一行:
int *p1 = malloc(128);
将其更改为 NULL,然后在 main 中对其进行初始化。
1st,基本错误是你的 main 方法必须返回一些 int 值
int main(void) {
char *p2 = malloc(128);
return 0;
}
或尝试
void main(){
char *p2 = malloc(128);
}
2、你可能要指定你的指针是什么类型的缓冲区,否则会是(void*)类型的指针,所以我建议你可以试试:
int *p1 = (int*)malloc(128);
char *p2 = (char*)malloc(128);