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

时间:2015-01-12 00:56:18

标签: c++ c arrays pointers

下面的代码显示了一个包含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 ++中做同样的事情,我需要做什么?

1 个答案:

答案 0 :(得分:3)

您不需要任何额外的操作来在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中,我认为这违反了严格的别名规则,但我不太确定。