在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 中,我认为这也违反了严格的别名规则,但我不太确定。
下面的代码展示了一个包含 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 中,我认为这也违反了严格的别名规则,但我不太确定。