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