The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"Нормальный ли код получился? (Переворот строки Си)."
Отправлено dcc0, 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)
Верно ли теперь?

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



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

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