重新分配大小为3的char *时使用realloc-Problem问题出错

时间:2019-02-10 22:32:54

标签: c realloc

我正在做一个学校项目,在编写代码时,我收到有关下一个无效尺寸的错误消息。 我将在这里留下我主要代码中发生的事情的简短版本。 当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++;
        }
    }

1 个答案:

答案 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合法),但是第二个错误就没有了,