gpt4 book ai didi

c - 收到无效的初始化程序错误

转载 作者:行者123 更新时间:2023-11-30 19:56:38 24 4
gpt4 key购买 nike

为什么我收到以下代码的“无效初始化程序错误”?

#include<stdio.h> 
#include<malloc.h>

int main(){
int i = 2;
int j;
for(j = i ; j < 20; j++){
char *p[5] = malloc(20 * sizeof(char));
int len = 0;
p[0] = 'a';
}
return 0;
}

最佳答案

您有一个指针数组,并且您只为其分配了一个指针:

char *p[5] = malloc(20 * sizeof(char));

改用这个:

char *p = malloc(20 * sizeof(char));

如果您确实想要一个指针数组,但只设置其中的第一个,那么这应该是您的代码:

char *p[5] = {malloc(20 * sizeof(char))};

(或者更好:char *p[5] = {0}; p[0] = malloc(20 * sizeof(char));)

如果这是您想要的,则必须以不同的方式指定字母“a” - 使用 *(p[0]) = 'a'; 代替。

此外:您不再释放内存。您应该使用 free(p); 来执行此操作,否则您的程序可能会消耗越来越多的内存。

对于小程序,这没有问题,因为操作系统在程序关闭后无论如何都会释放内存。

但这是不好的做法,也是许多糟糕软件的原因。

关于c - 收到无效的初始化程序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21512308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com