我想要或两个大块的内存......但它不起作用内存块之间的逻辑运算?
考虑我有三个char * bm,bm_old和bm_res。
#define to_uint64(buffer,n) {(uint64_t)buffer[n] << 56 | (uint64_t)buffer[n+1] << 48 | (uint64_t)buffer[n+2] << 40 | (uint64_t)buffer[n+3] << 32 | (uint64_t) buffer[n+4] << 24 | (uint64_t)buffer[n+5] << 16 | (uint64_t)buffer[n+6] << 8 | (uint64_t)buffer[n+7];}
...
for (unsigned int i=0; i<bitmapsize(size)/8; i++){
uint64_t or_res = (to_uint64(bm_old,i*8)) | (to_uint64(bm,i*8));
memcpy(bm_res+i*sizeof(uint64_t), &or_res, sizeof(uint64_t));
}
bm_res不正确!
有什么线索?
谢谢,
埃米尔。
为什么不简单地'reinterpret_cast'缓冲区? –
@ K-ballo,严格来说这是未定义的行为。但它也比这更简单也可能更快... – bdonlan
@ K-ballo:那会是UB。 –