Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Atmega AVR микроконтроллер V-USB 3 порции по 16 бит http://www.cyberforum.ru/avr/thread2086521.html
Собственно такой вопрос. Как мне изменить настройки чтобы отправлять на комп 3 посылки по 16 бит каждая(тип данных int). я так понял по этой статье весь цимес в этих параметрах которые тут...
Atmega AVR микроконтроллер STK-500 и AVR Dragon. Стоимость. Почему бы не посмотреть цены в интернет-нигазинах? http://www.cyberforum.ru/avr/thread2086520.html
JTAG ICE никак не подружить с AVR Studio 5? Atmega AVR микроконтроллер
Привет. Прикупил тут на ебее JTAG ICE http://www.ebay.com/itm/221168829974?ss ... 1439.l2649 И, погуглив десять минут, я пришел к неутешительному выводу, что он работает только с четвертой студией....
Atmega AVR микроконтроллер случайное число
как в Winavr сгенерировать случайное число? необходимо чтобы случайное число принимало только одно из 4 значений, сверх точность ни к чему. У кого какие идеи ?
Atmega AVR микроконтроллер avrdude в linux http://www.cyberforum.ru/avr/thread2086517.html
Есть микроконтроллер ATtiny85 и программа - под виндой для прошивки пользуюсь унипроф (программатор Громова - http://iosyitistromyss.ru/avr-shag-pervyj-programmator.html) флэш нормально стирается и...
Atmega AVR микроконтроллер вытащить прошивку из контроллера Atmega8515 случилась беда с одним устрйоством, у контроллера сгорел порт PB, или ресет запрограмирован как выход. устройство работающее на этом контроллере работает на половину, тоесть контроллер не... подробнее
ridsh
0 / 0 / 0
Регистрация: 16.12.2011
Сообщений: 30
04.04.2013, 11:27 0

Грабли malloc/free

04.04.2013, 11:27. Просмотров 2477. Ответов 8
Метки (Все метки)

Ответ

... Хм... Только не...
atom = malloc( sizeof(rf_packet_atom_t) )
, а
atom =(rf_packet_atom_t) malloc( sizeof(rf_packet_atom_t) )
все таки, наверно...
Нет, правильно у автора. Кастить нужно только при несовпадении типа указателя (что потенциально может быть ошибкой). void* же, который возвращает malloc - нетипизированный указатель.
void free_atom(rf_packet_atom_p *atom)
{
free( &atom->data);
free( &atom );
&atom =NULL;
}
Не правильно.
Кстати, если пишете не на Си, а на Си++, то можно:
Воспользоваться механизмом ссылок:
Пишите лучше на чистом Си.
Дык вот после выхода atom не NULL. Даже так пробывал:

void free_atom(rf_packet_atom_p atom)
{
free( atom->data);
free( atom );
atom =NULL;
}
И почему оно должно быть NULL? В функцию передаётся копия переменной. Не важно, какого она типа. Указатель - адрес в памяти, где лежит твоя структура. После free по этому адресу будет мусор, но сам указатель - обычная переменная в твоей программе, ничем не отличающаяся от других переменных. Её значение само по себе не изменится. А чтобы функция что-то могла записать в переменную, надо передать в функцию указатель на неё (в данном случае, указатель на указатель - rf_packet_atom_p *atom). Тогда функция будет знать где хранится эта переменная (а не только её значение). Внутри же функции, чтобы обратиться к изначальной переменной, а не к указателю на неё, нужно использовать обращение по указателю - free( (*atom)->data), *atom = NULL. Чтобы собственно, передать в функцию указатель на переменную, пишем - free_atom(&x). &x - получение адреса переменной. Однако, если x - локальная переменная вызывающей функции, обнулится только она. Ссылки в C++ - то же самое, только в более неявном и мутном виде. Забудешь "&" - и уже работаешь в функции не с внешней переменной по указателю, а с локальной переменной. В чистом Си же чётко видно - где указатель, а где нет. Без лишних сущностей.

Вернуться к обсуждению:
Грабли malloc/free
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2013, 11:27

malloc, free error
Здравствуйте. Возникла следующая проблема. Код ниже: string http_headers = "GET /index.asd...

Освобождение памяти malloc free
В общем работаю над расширением для php (для тренировки в php и в c++ сразу) Суть дела вот в чем,...

Собственная реализация malloc, free
Нужно написать собственную реализацию malloc, free без использования calloc и всего подобного. Где...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru