说,我在c ++中有一个带有64个块的char数组,每个块有64个字节的内存分配:
char **disk = new char*[64];
for (int i = 0; i < 64; i++) {
disk[i] = new char[64];
}
我想在char数组的第一个块中设置一个位图。 位图仅包含整数。 所以disk [0]应该是位图。位图包含用于占用的ether 1和用于free的0,如果它们被占用或空闲,则指定数组中的其余块。每个块1位。
但我不知道如何为我需要的特定大小实现位图,因为位图也应该是64字节,并且它包含64个块的整数,我该如何实现呢?
这是项目要求,所以...我无法在数组之外定义位图。
答案 0 :(得分:1)
不应该劫持数组的哪个部分,而应该只创建自己的类型:
struct MyType
{
bitmap_type bitmap; // is this a uint64_t[8]? Or a std::bitset? Or... ?
char data[63][64]; // or whatever dimensions
};
MyType* data = new MyType;
这种方式,您所有类型的所有用户都知道data->bitmap
是位图而data->data
是实际数据,而不是必须记住data[0]
是特殊但data[x]
} x>0
是实际数据。