Khaine
#programowanie #cpp

http://stackoverflow.com/questions/4707012/is-it-better-to-use-stdmemcpy-or-stdcopy-in-terms-to-performance

Może mi ktoś wyjaśnić co się o------o w tej linijce?

bits = new (std::nothrow) char[((int *) copyMe->bits)[0]];


O ile std::nothrow sobie sprawdziłem, to to co widzę w nawiasach na prawo od char to po prostu nie wiem co robi. Rzutuje jakieś coś na wskaźnik typu int i ma coś w stylu char [int* [0]]. Co to za konstrukcja?
1
  • Najlepsze
  • Wszystkie komentarze
ulises
@Khaine: rzutuje cos na eskaznik do int, i poniewaz jest to zdaniem programisty tablica to pobiera zerowy element, i ten wlasnie zerowy element ma byc rozmiarem tablicy charow( ͡° ͜ʖ ͡°)
4
Kaczus2B
Kaczus2B
@matek85: sizeof(int) najczęściej jest 4, ale niekoniecznie....
2
Khaine
@ulises: Ok, już to widzę teraz. Ale zastanawiam się czy się nie dało tego zrobić w bardziej ludzki sposób, bo to wygląda makabrycznie.
0
m.....5
m.....5
@Khaine:

((int *) copyMe->bits)

oznacza rzutowanie wskaznika na typ int*, czyli dynamiczną tablicę
0
ulises
@Khaine: oczywiscie, że tak, to nie powinno przejść review ( ͡º ͜ʖ͡º)
0
Khaine
@ulises: Komentarz powinien chociaż być po prawo co dzieje się w środku. Widzę ogólnie czemu to jest zrobione tak jak jest zrobione - ma jakąś byteArray z której chce wyciąć pierwsze 4 bajty i zrobić z tego rozmiar tablicy charów (prawdopodobnie pierwsze 4 bajty tej tablicy są nagłówkiem mówiącym o rozmiarze). Może jest to trochę nieintuicyjne przy pierwszym spojrzeniu, ale czemu miałoby nie przejść przeglądu?
0
Khaine
@Kaczus2B: Na jakichś mikrokontrolerach z małą ilością RAMu jest 2. Bodaj na AVRkach mniejszych choćby.
0