Ошибка использования realloc-Problem при перераспределении char * с размером = 3 - PullRequest
0 голосов
/ 11 февраля 2019

Я делаю школьный проект, и когда я кодировал его, я получил эту ошибку о недопустимом следующем размере.Я оставлю здесь короткую версию того, что произошло в моем основном коде.Программа, кажется, ломается, как только я добираюсь до последнего перераспределения, когда размер = 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 голосов
/ 11 февраля 2019

вы сразу записываете из выделенной памяти:

int size=0;
char**moedas=malloc(size*sizeof(char*));
moedas[0]=arga[3];

, поскольку индекс 0 находится вне malloc (0)

, затем в первом цикле , в то время как когда i равно 4 в строке

moedas[i-3]=arga[i]

, поскольку индекс 1 также не соответствует malloc (0)


После инициализации редактирования size до 1: первая ошибка исчезнет (индекс 0 допустим), но не вторая, где индекс равен 1

...