The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Нормальный ли код получился? (Переворот строки Си)."
Версия для распечатки Пред. тема | След. тема
Форум Программирование под UNIX
Исходное сообщение [ Отслеживать ]

. "Нормальный ли код получился? (Переворот строки Си)." +/
Сообщение от dcc0email (?), 16-Сен-16, 08:38 
>[оверквотинг удален]
> new_s = (char*) malloc(n*sizeof(int));
> Тут Вы выделяете, грубо говоря, выделяете память под n int'ов, предполагая работать
> с нею как с char'овскими данными.
> Ошибка заключается в том, что обычно sizeof (int) = 4, когда sizeof
> (char) = 1.
> Т. е. Вы выделяете памяти с четырёхкратным запасом! Для учебного примера это
> не так критично. Но, если Вам надо было обработать строку в
> 10000 символов, Ваш код сожрал бы на это почти 40 кб
> вместо 10. Иногда это бывает весьма критично. Особенно если не освобождать
> память при помощи free ()

Просто для для проверки понимания:
Т.е. должно быть

так примерно int n = strlen(argv[1]);
а потом > new_s = (char*) malloc(n*sizeof(char));
И в конце free(new_s)
Верно ли теперь?

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Нормальный ли код получился? (Переворот строки Си)., dcc0, 14-Сен-16, 20:10  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру