реклама на сайте
подробности

 
 
> корректно ли передавать так адрес в memset?
Метценгерштейн
сообщение Dec 12 2016, 15:11
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



Код
    
Element *tmpElement = (Element*)malloc(sizeof(Element));
memset (tmpElement, 0, sizeof(Element)); // записать 0 в структуру


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

Корректно?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
skripach
сообщение Dec 12 2016, 15:50
Сообщение #2


■ ■ ■ ■
*****

Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443



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

А в чем сомнения?
Только добавить проверку что malloc таки выделил память.


--------------------
Делай что должен и будь что будет.
Go to the top of the page
 
+Quote Post
johnshadow
сообщение Dec 13 2016, 07:35
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 25-09-08
Пользователь №: 40 477



Цитата(Метценгерштейн @ 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); //если этот кусок памяти больше не нужен
}


Сообщение отредактировал johnshadow - Dec 13 2016, 07:35
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Dec 13 2016, 07:58
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



всем спасибо.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 14 2016, 08:34
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(skripach @ Dec 12 2016, 18:50) *
Только добавить проверку что malloc таки выделил память.

Лучше задать обработчик события невыделения памяти malloc-у, чем в каждом месте выделения пихать проверку.
Go to the top of the page
 
+Quote Post
megajohn
сообщение Dec 14 2016, 09:22
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



а можно заюзать calloc


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 11th August 2025 - 05:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01386 секунд с 7
ELECTRONIX ©2004-2016