Ketika bertanya tentang perilaku umum yang tidak terdefinisi dalam C , orang kadang-kadang merujuk pada aturan aliasing yang ketat. Apa yang mereka bicarakan?
Saya baru-baru ini menemukan deoptimisasi yang aneh (atau lebih tepatnya melewatkan peluang pengoptimalan). Pertimbangkan fungsi ini untuk pembongkaran array yang efisien dari bilangan bulat 3-bit menjadi bilangan bulat 8-bit. Ini membongkar 16 int di setiap iterasi loop: void unpack3bit(uint8_t* target, char* source, int size) { while(size > 0){ uint64_t t …
Pertimbangkan kode berikut ( padalah tipe unsigned char*dan bitmap->widthdari beberapa tipe integer, persis yang tidak diketahui dan bergantung pada versi mana dari beberapa perpustakaan eksternal yang kita gunakan): for (unsigned x = 0; x < static_cast<unsigned>(bitmap->width); ++x) { *p++ = 0xAA; *p++ = 0xBB; *p++ = 0xCC; } Apakah layak …