Простое копирование memcpy
От: na1s  
Дата: 30.11.09 06:45
Оценка:
Какие условия должны быть, чтоб можно было бы копировать объект в буфер с помощью memcpy(dsr,this,sizeof(*this))?
Re: Простое копирование memcpy
От: jazzer Россия Skype: enerjazzer
Дата: 30.11.09 06:47
Оценка: +1
Здравствуйте, na1s, Вы писали:

N>Какие условия должны быть, чтоб можно было бы копировать объект в буфер с помощью memcpy(dsr,this,sizeof(*this))?


*this должен быть POD
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: Простое копирование memcpy
От: Сергей Мухин Россия  
Дата: 30.11.09 06:52
Оценка: +1
Здравствуйте, jazzer, Вы писали:

J>Здравствуйте, na1s, Вы писали:


N>>Какие условия должны быть, чтоб можно было бы копировать объект в буфер с помощью memcpy(dsr,this,sizeof(*this))?


J>*this должен быть POD

+ соотв выравнивание (если будет использоваться как объект) и достаточно памяти в dsr (или dst)
---
С уважением,
Сергей Мухин
Re[3]: Простое копирование memcpy
От: sokel Россия  
Дата: 30.11.09 08:10
Оценка:
Здравствуйте, Сергей Мухин, Вы писали:

СМ>Здравствуйте, jazzer, Вы писали:


J>>Здравствуйте, na1s, Вы писали:


N>>>Какие условия должны быть, чтоб можно было бы копировать объект в буфер с помощью memcpy(dsr,this,sizeof(*this))?


J>>*this должен быть POD

СМ>+ соотв выравнивание (если будет использоваться как объект) и достаточно памяти в dsr (или dst)

+ отсутствие перекрытия

POSIX: If copying takes place between objects that overlap, the behavior is undefined.
Re[4]: Простое копирование memcpy
От: rising_edge  
Дата: 30.11.09 12:05
Оценка: +1
Здравствуйте, sokel, Вы писали:

S>+ отсутствие перекрытия


S>POSIX: If copying takes place between objects that overlap, the behavior is undefined.


А для такх случаев есть memmove().
Re[5]: Простое копирование memcpy
От: Dair Россия https://dair.spb.ru
Дата: 30.11.09 17:00
Оценка:
S>>POSIX: If copying takes place between objects that overlap, the behavior is undefined.

_>А для такх случаев есть memmove().


Обратите внимание, что там this в качестве источника — получить segmentation violation после этого — раз плюнуть.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.