Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: корректно ли передавать так адрес в memset?
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Метценгерштейн
Код
    
Element *tmpElement = (Element*)malloc(sizeof(Element));
memset (tmpElement, 0, sizeof(Element)); // записать 0 в структуру


я уже в tmpElement имею адрес. Его и передаю.

Корректно?
skripach
Цитата(Метценгерштейн @ Dec 12 2016, 18:11) *
Корректно?

А в чем сомнения?
Только добавить проверку что malloc таки выделил память.
johnshadow
Цитата(Метценгерштейн @ Dec 12 2016, 19:11) *
Корректно?

Вполне. Есть пару предложений:
malloc возвращает void* - т.е. приведение к типу "указатель на Element" не нужно

тип переменной на которую указывает tmpElement может в дальнейшем поменяться, я в таких случаях предпочитаю
в sizeof использовать сам указатель:
Код
Element *tmpElement = malloc(sizeof(*tmpElement));
memset (tmpElement, 0, sizeof(*tmpElement));


проверку на выделение памяти из кучи добавляю так (хотя возможно это и не совсем правильный метод):
Код
Element *tmpElement;
if ((tmpElement = malloc(sizeof(*tmpElement)))) {
memset (tmpElement, 0, sizeof(*tmpElement));
...
free(tmpElement); //если этот кусок памяти больше не нужен
}
Метценгерштейн
всем спасибо.
jcxz
Цитата(skripach @ Dec 12 2016, 18:50) *
Только добавить проверку что malloc таки выделил память.

Лучше задать обработчик события невыделения памяти malloc-у, чем в каждом месте выделения пихать проверку.
megajohn
а можно заюзать calloc
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.