The OpenNET Project / Index page

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



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

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

Спасибо огромное. Именно учебный пример.  В чужую память конечно же залез...
Со strlen как то все достаточно понятно,  так strrev именно так и устроен,  но мне хотелось повертеть самую голую базу си

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

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



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

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