在c ++中的char数组的第一个块创建一个位图

时间:2015-01-11 22:52:21

标签: c++ arrays bitmap

说,我在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个块的整数,我该如何实现呢?

这是项目要求,所以...我无法在数组之外定义位图。

1 个答案:

答案 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是实际数据。