Jump to content

    
Sign in to follow this  
Метценгерштейн

корректно ли передавать так адрес в memset?

Recommended Posts

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

 

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

 

Корректно?

Share this post


Link to post
Share on other sites
Корректно?

Вполне. Есть пару предложений:

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); //если этот кусок памяти больше не нужен
}

Edited by johnshadow

Share this post


Link to post
Share on other sites
Только добавить проверку что malloc таки выделил память.

Лучше задать обработчик события невыделения памяти malloc-у, чем в каждом месте выделения пихать проверку.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this