Diziler ve yöntemler içeren bir yapıda memcpy kullanmanın güvenli olup olmadığını merak ediyorum (dizilerin endekslenmesi olağandışı olduğundan bazı alıcılar ve ayarlayıcılar olağan dışıdır ve bir şekilde haritalamam gerekir). POD'lar için güvenli olduğunu biliyorum ve yapmamın POD olarak kabul edilip edilmeyeceğinden emin değilim?Dizilerle ve bazı yöntemlerle memcstr yapısında güvenli midir?
cevap
struct
TriviallyCopyable ise memcpy
kullanabilirsiniz.
struct
ürününüzün std::is_trivially_copyable
numaralı ürününü kullanarak kopyalanamaz olup olmadığını kontrol edebilirsiniz. Bir yorumda @JohanLundberg tarafından belirtildiği gibi, hedef adresin 0
modulo std::alignment_of<T>
olması gerekir. http://en.cppreference.com/w/cpp/language/object#Alignment adresindeki nesnelerin hizalama gereksinimleri hakkında daha fazla bilgi edinebilirsiniz.
Yeterli derecede, örn. std :: atomic
Hizalama endişeleri ne durumda? Ayrıca hedefin 0 modulo std :: alignment_of
@JohanLundberg, iyi nokta. –
* Sanal olmayan * üye işlevleri, evet. Https://isocpp.org/wiki/faq/intrinsic-types#pod-types sayfasına bakın. – dxiv