#pytanie #programowanie #cpp
I teraz to N jest liczbą znaków, czy bajtów?
Mam wątpliwości bo operator new alokuje pamięć, a chcąc wyzerować pamięć przez memset posługujemy się bajtami:
wchar_t *pwString = new wchar_t[N];I teraz to N jest liczbą znaków, czy bajtów?
Mam wątpliwości bo operator new alokuje pamięć, a chcąc wyzerować pamięć przez memset posługujemy się bajtami:
memset(m_pwString, 0, N * sizeof(wchar_t));- Najlepsze
- Wszystkie komentarze







operator newdla tablicy zaalokuje Nwchat_telementów, czyli najpewniej N*2 (wide chary pewnie po 2 bajty)memsetto C API - tam lubią bawić się surowymi bajtami, i musisz podawać liczbę bajtów (analogicznie pointer zwrócony przezmallocmusiałbyś scastować z surowych bajtów na cokolwiek konretnego)std::vector, a jeżeli już koniecznie znewto chociaż z inteligentych wskaźnikówstd::unique_ptrczystd::shared_ptr.@sheeple: @that_ugly_dude: Na 64bit GCCeku najprawdopodobniej 4 ( ͡° ͜ʖ ͡°)
https://wandbox.org/permlink/YAKSKV9ojAR53EBr
wchar_t *pwString = new wchar_t[N]{};Kompilator może to zoptymalizować i zapytać system o już wyzerowany blok pamięci.
Tutaj przykład:
https://wandbox.org/permlink/mXBnCHeZZr6lfQRb
Do ustawiania konkretnej wartości lepiej używać
std::fill;malloczwracavoid*, raczej mało użyteczny wskaźnik (⌐ ͡■ ͜ʖ ͡■)auto ptr = malloc(...);Foo* foo = malloc(sizeof(Bar)))proponuję się dokształcić: https://stackoverflow.com/questions/1736833/void-pointers-difference-between-c-and-c
Nie zauważyłem że to cpp.
Sorry cumplu!
Proponuje sie doksztalcic https://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc