在C++中为char数组分配固定内存

allocate fixed memory for char array in c++

下面的代码展示了一个包含 64 个块的二维字符数组。

char **arr= new char*[64];
for (int i = 0; i < 64; i++) {
    arr[i] = new char[64];
}

但我想控制这个数组,就像我可以在 C 中 malloc 固定内存一样。

char **arr= malloc(sizeof(char *) * 64);
for (int i = 0; i < 64; i++) {
    arr[i] = malloc(64);
}

如何在 C++ 中实现它?

此外,在 C 中,我们可以这样使用指针:

Mystruct *next_entry = (Mystruct *) ((char*) slot + SIZE;

我们可以计算指针地址并获取下一个可用的空闲内存。

如果我想在 C++ 中做同样的事情,我需要做什么?

您不需要任何额外的东西就可以在 C++ 中执行相同的操作,并且您的 new 代码等同于您的 malloc 代码

char **arr    = malloc(sizeof(char) * 64); equiv  char **arr    = new char*[64];
       arr[i] = malloc(64);                equiv         arr[i] = new char[64];

除了这行可能的错字

char **arr    = malloc(sizeof(char) * 64);

应该读作

char **arr= malloc(sizeof(char *) * 64);

这也将像在 c

中一样工作
Mystruct *next_entry = (Mystruct *) ((char*) slot + SIZE;

尽管即使在 c 中,我认为这也违反了严格的别名规则,但我不太确定。