Wpis z mikrobloga

#pytanie #programowanie #cpp

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));
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@sheeple: operator new dla tablicy zaalokuje N wchat_t elementów, czyli najpewniej N*2 (wide chary pewnie po 2 bajty)

memset to C API - tam lubią bawić się surowymi bajtami, i musisz podawać liczbę bajtów (analogicznie pointer zwrócony przez malloc musiałbyś scastować z surowych bajtów na cokolwiek konretnego)
  • Odpowiedz
@sheeple: Ale tak naprawdę lepiej korzystać z std::vector, a jeżeli już koniecznie z new to chociaż z inteligentych wskaźników std::unique_ptr czy std::shared_ptr.
  • Odpowiedz