-6

为什么以下代码块不起作用?

int *p1 = malloc(128);

int main(void) {
char *p2 = malloc(128);
}
4

4 回答 4

2

全局变量的初始化器必须是常量,所以第一个malloc会导致编译时错误。

于 2013-06-27T01:25:51.683 回答
1

您不能使用 malloc 在这样的代码块之外初始化 p1 ,只需像 p2 一样在 main 内部执行

于 2013-06-27T01:25:16.147 回答
1

您不能在全局变量的初始化中调用函数。这是它抱怨的那一行:

int *p1 = malloc(128);

将其更改为 NULL,然后在 main 中对其进行初始化。

于 2013-06-27T01:25:27.770 回答
-2

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);
于 2013-06-27T01:30:46.437 回答