The OpenNET Project / Index page

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



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

. "Нормальный ли код получился? (Переворот строки Си)." +/
Сообщение от Asgard (?), 14-Сен-16, 22:56 
>>[оверквотинг удален]

Как говорила моя учительница математики в 5-м классе (наверняка кого-то цитировала): "Если вы получили правильный ответ, это вовсе не значит, что ваше решение верное... Возможно, вы просто допустили чётное количество ошибок!"

Что бросается навскидку...
char *argv[] --> Следовательно argv - массив указателей. sizeof от элемента массива вернёт размер этого массива, т. е.  int n = sizeof(argv[1]); дат Вам размер указателя на char, а не размер массива байтов отведённого под строку, которая хранится по адресу argv[1].
Если хотите получить длину соответствующей строки, используйте strlen (argv[1])... strlen лежит в библиотеке string.h

То что Вы при этом записывая в new_s[i] не попали в чью-то чужую память и не огребли segmentation fault скорее везение и наличие больших гигов свободной оперативки в системнике.

Второе: Кусок оперативной памяти выдаваемый Вам malloc'ом отдаётся Вам в полноценное пользование и больше никем не контролируется. Т. е. до ближайшего ребута компа система о нём больше знать ничего не хочет. Она только будет поглядывать обним глазом, чтобы кто-то чужой в него не писал ничего. Следовательно, если не хотите утечек памяти, когда закончили работать - не забывайте делать (в Вашем случае) free (new_s);


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

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



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

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