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

allocate fixed memory for char array in c++

本文关键字:内存 分配 数组 C++ 中为 char      更新时间:2023-10-16

下面的代码展示了一个包含 64 个块的 2d char 数组。

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 中,我认为这违反了严格的混叠规则,但我不太确定。