Zastanawiam się, czy można bezpiecznie używać memcpy na strukturze zawierającej tablice i metody (tylko niektóre pobierające i ustawiające, ponieważ indeksowanie tablic jest niezwykłe i muszę je jakoś odwzorować). Wiem, że to jest bezpieczne dla POD i nie jestem pewien, czy mój struct byłby uważany za POD, czy nie?Czy można bezpiecznie dzielić strukturę za pomocą tablic i niektórych metod?
Odpowiedz
Możesz użyć memcpy
, jeśli struct
jest TriviallyCopyable.
Możesz sprawdzić czy twoja struct
jest trywialnie kopiowana za pomocą std::is_trivially_copyable
.
Ponadto, jak wskazano przez @JohanLundberg w komentarzu, adres docelowy musi być 0
modulo std::alignment_of<T>
. Więcej informacji na temat wymagań dotyczących wyrównania obiektów można uzyskać pod adresem http://en.cppreference.com/w/cpp/language/object#Alignment.
Co zabawne, obejmuje np. 'std :: atomic
Co z obawami związanymi z dostosowaniem? Czy nie musisz również upewnić się, że miejsce docelowe to 0 modulo std :: alignment_of
@JohanLundberg, dobry punkt. –
- 1. Czy można dzielić pliki maven pom?
- 2. Java - Czy można wyprowadzić stacktrace za pomocą sygnatur metod?
- 3. Indeksowanie za pomocą maskowanych tablic w numpy
- 4. Czy można bezpiecznie używać os.environ.setdefault?
- 5. Czy można bezpiecznie przechwycić StackOverflowError w Javie?
- 6. Czy można deserializować za pomocą Boost.Hana?
- 7. Wypełnianie kolekcji za pomocą tablic
- 8. Jak skonfigurować strukturę za pomocą SpringBoot i Angular2?
- 9. Czy można bezpiecznie wyłączyć ostrzeżenie MSVC C4482?
- 10. Czy można sortować tablice za pomocą preprocesora?
- 11. Sortowanie tablic zmiennych za pomocą klucza słownika
- 12. Czy można bezpiecznie przechowywać wystąpienie wyjątku i ponownie go użyć?
- 13. Jak mogę wykluczyć dane dla niektórych tabel, ale zachować strukturę za pomocą mysqldump?
- 14. Czy można bezpiecznie uzyskać dostęp do tablic statycznych z wielu wątków?
- 15. Czy można bezpiecznie wykonywać inokacje makro?
- 16. Czy można bezpiecznie #define NULL nullptr?
- 17. Czy można bezpiecznie udostępnić publicznie Firebase apiKey?
- 18. Czy można bezpiecznie używać SQLalchemy z gevent?
- 19. Czy można bezpiecznie wywołać RCW z finalizatora?
- 20. Czy można bezpiecznie używać -DBL_MAX w kodzie?
- 21. Czy można bezpiecznie dziedziczyć z klasy za pomocą nie wirtualnego destruktora?
- 22. Czy można bezpiecznie aktualizować tabelę MySQL podczas iterowania zestawu wyników za pomocą narzędzia Perl DBI?
- 23. Czy można bezpiecznie używać przypisywania ciągów i przypisywania zadań?
- 24. Czy można bezpiecznie blokować i monitorować ten sam obiekt?
- 25. Czy można bezpiecznie zmienić nazwę i skopiować zespół?
- 26. Czy można bezpiecznie ręcznie usunąć plik tempdb.mdf?
- 27. Porównaj dwa arkusze za pomocą tablic
- 28. Sprawdź, czy okno dialogowe można bezpiecznie odrzucić.
- 29. Czy można bezpiecznie usunąć tu zmienną C++?
- 30. Czy można bezpiecznie utworzyć nowy wątek?
* Nie wirtualne funkcje użytkownika * tak. Zobacz https://isocpp.org/wiki/faq/intrinsic-types#pod-types. – dxiv