У меня есть char ** stringList, в котором я хочу написать строки неизвестного размера и количества.malloc on char ** читать и писать Ошибка
в какой-то момент у меня есть следующий код:
static char** stringList;
static int laenge=0;
static int size=0;
void getInput(){
char input[FILENAME_MAX];
int zeilen=10;
int counter=0;
stringList = (char**) malloc(zeilen*sizeof(char*));
size = zeilen*sizeof(char*);
while(fgets(input, FILENAME_MAX , stdin) != NULL)
{
if (strlen(input) <= 100){
stringList[counter] = (char*) malloc(strlen(input));
size += strlen(input);
if (stringList[counter] == NULL){
exit(EXIT_FAILURE);
}
strcpy(stringList[counter],input);
counter++;
laenge++;
} else {
fprintf(stderr,"String longer than 100 characters\n");
}
if (counter==zeilen){
zeilen +=10;
stringList = (char**) realloc(stringList,size+10*sizeof(char));
if (stringList == NULL){
exit(EXIT_FAILURE);
}
}
}
}
В случае необходимости я могу увеличить размер StringList, чтобы сделать его способным хранить больше строк.
Valgrind дает мне WriteError на линии 1 и 5, тоже на линии Ошибка чтения 2.
У вас 'malloc'ed достаточно памяти для' stringList' себя? (Кроме того, 'malloc'ing в строке 1 и присвоение в строке 5 утечки памяти' malloc'.) –
Дайте нам минимальный пример кода, пожалуйста, мы не знаем тип ввода ect ... – NeeL