下面的代码显示了一个包含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 ++中做同样的事情,我需要做什么?
答案 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中,我认为这违反了严格的别名规则,但我不太确定。