在 C++ 中为 char 数组分配固定内存
allocate fixed memory for char array in c++
下面的代码展示了一个包含 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 中,我认为这违反了严格的混叠规则,但我不太确定。
相关文章:
- Win32编译器选项和内存分配
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 当需要超过16GB的连续内存时,内存分配失败
- 尝试摆脱任何堆内存分配
- 以下代码执行哪种内存分配(动态或静态)?
- 开放 CV 中的动态内存分配,用于视频处理
- 为什么类和 main() 函数中也有动态内存分配
- 使用 NTAllocateVirtualMemory 和 GetProcAddress 的内存分配问题不起作用
- C++:矢量分配器行为、内存分配和智能指针
- 介于 [固定数组] 和 [带内存分配的指针] 之间的性能
- Linux C++ 中的页面对齐内存分配
- 整数内存分配/释放
- 将内存分配返回值强制转换为 TYPE 数组
- C++程序什么都不做,但瓦尔格林德显示内存分配
- 给定特定内存地址的数组的动态内存分配
- 如何完成内存分配
- 我刚刚了解了C++中的动态内存分配
- 在先前调用 string::find 后添加内存分配和内存集会导致它返回 npos.为什么?
- 对于堆上的页面对齐内存分配是否有任何优化或不同的 API?
- 无法删除布尔动态内存分配