Вид главной функции:
int _tmain(int argc, _TCHAR* argv[])
{
char **strings;
strings=input();
output(strings);
my_free(strings);
return 0;
}
Работает более мене корректно, но если добавить следующие строки
в main до основных функций
char *a[10];
for (int i=0; i<10; i++)
a=new char;
for (int i=0; i<5; i++)
delete a[i*2];
то всё работать перестаёт.
Вопроc: почему?
Понятно, что выделили память под массив а и не освободили,
но почему эта память мешает дальнейшей работе?
вот код для **input, там ,как говорится, чёрт ногу сломит:
Код: Выделить всё
char **input()
{
char **strings;
char s;
int line=-1,len = 0;
bool keep_input = 1;
strings = new char*[1];
while (keep_input)
{
len = 0;
strings = (char**)realloc(strings,(++line+1)*sizeof(char*));
strings[line] = new char[1];
strings[line][len] = '\0';
while ((s=getchar())!='\n'){
strings[line][len]=s;
realloc(strings[line],(++len+1)*sizeof(char));
strings[line][len] = '\0';
};
keep_input=len>0;
};
return strings;
}