void* block = ::operator new(n*size);
int i;
for(i = 0;i<BLOCK_SIZE -1;i++){
*(unsigned int*)((unsigned int)block + n*i) = (unsigned int)block + n*(1+i);
}
*(unsigned int*)((unsigned int)block + n*i) = 0;
問題>我無法理解上面代碼的含義。看起來,一塊內存正在指向下一個塊存儲器。'*(unsigned int *)((unsigned int)block + n * i)是什麼意思'
有人可以請給我解釋一下嗎?
您無法對'void *'執行算術運算。原始程序員將所有東西都轉換爲'unsigned int'以允許算術,然後將其轉換回指針。請注意,['std :: uintptr_t'](http://en.cppreference.com/w/cpp/types/整數)是存儲指針的正確整數類型。 –
還要注意,這是標準C++中未定義的行爲;因爲它符合規定,分配可以是'void * block = new unsigned int [n]',假設'size == sizeof(unsigned int)' –
@ q0987這是一些公開/開源代碼的一部分嗎? –