- char **str = malloc.... пытаюсь научиться использовать динам..., phpcoder, 13:32 , 19-Ноя-09 (1)
>кусок выше работает >если сделать присвоение то на этапе запуска прога улетает в дамп >str[i]="myxa"; Потому что при присвоении строки вы присваиваете не строку, а адрес на эту строку. Причем, эта строка константная и находится в специальном сегменте памяти, доступном только для чтения. Вызывать для этого указателя free() это ошибка, которая и приводит к аварийному завершению программы.
- char **str = malloc.... пытаюсь научиться использовать динам..., myxa, 13:34 , 19-Ноя-09 (2)
>>кусок выше работает >>если сделать присвоение то на этапе запуска прога улетает в дамп >>str[i]="myxa"; > >Потому что при присвоении строки вы присваиваете не строку, а адрес на >эту строку. Причем, эта строка константная и находится в специальном сегменте >памяти, доступном только для чтения. Вызывать для этого указателя free() это >ошибка, которая и приводит к аварийному завершению программы. Спасибо!!!!
- char **str = malloc.... пытаюсь научиться использовать динам..., Аноним, 13:39 , 19-Ноя-09 (3)
А не проще stl?std::vector<std::string> strv; strv.resize(10); for (int i=0; i<10; i++) strv[i] = "myxa";
- char **str = malloc.... пытаюсь научиться использовать динам..., phpcoder, 13:44 , 19-Ноя-09 (4)
>А не проще stl? К сожалению, автор не указал на чем он пишет -- С или С++ (и можно ли ему использовать STL). P.S. кстати это
> str[i] = (char*) malloc (256 * sizeof(char)); > strcpy(str[i],"myxa"); можно заменить на > str[i] = strdup("myxa"); Ну и результат malloc() (или strdup()) неплохо бы проверять также. - char **str = malloc.... пытаюсь научиться использовать динам..., myxa, 13:45 , 19-Ноя-09 (5)
>А не проще stl? > >std::vector<std::string> strv; >strv.resize(10); >for (int i=0; i<10; i++) > strv[i] = "myxa"; Проще ... спору нет... но не панимая основ далеко не уедешь
|