我正在做一个学校项目,在编写代码时,我收到有关下一个无效尺寸的错误消息。 我将在这里留下我主要代码中发生的事情的简短版本。 当size = 3时,程序似乎一到最终重新分配就中断 谢谢
#include <stdlib.h>
int main(){
char * arga[7];
arga[1]="2018-11-12";
arga[2]="2018-11-13";
arga[3]="EUR";
arga[4]="BRL";
arga[5]="JPY";
arga[6]="GBP";
int argc=7;
int i=4;
int size=2;
//int indexes = (sizeof(arga)/sizeof(arga[0]))+1;
char**moedas=malloc(size*sizeof(char*));
moedas[0]=arga[3];
while(i<argc){
moedas[i-3]=arga[i];
moedas=realloc(moedas,size*sizeof(char*));
size++;
i++;
}
}
答案 0 :(得分:1)
您立即写出分配的内存:
int size=0;
char**moedas=malloc(size*sizeof(char*));
moedas[0]=arga[3];
因为索引0不在malloc(0)中
然后在 while 的第一个循环中,当行中的 i 为4时
moedas[i-3]=arga[i]
因为索引1也超出了malloc(0)
在将 size 初始化为1后,第一个错误消失了(索引0合法),但是第二个错误就没有了,