c++ - 在连续内存块中动态创建二维数组

标签 c++

我试图在一个连续的内存块中创建二维数组,但它给出了 M 个连续的 block ,每个 block 的大小为 N。

int **arr = new int*[M];
for (int i = 0 ; i < M ; i++ )
{
     arr[i] = new int[N];
}

如何在连续的内存块中创建二维数组?

最佳答案

int *buffer=new int[M*N];
int **arr=new int*[M];
for(int i=0;i<M;++i)
    arr[i]=buffer+i*N;

实际上没有必要存储 arr 指针——它们可以在需要时计算。

关于c++ - 在连续内存块中动态创建二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4552080/

相关文章:

c++ - 如何重载operator new来实现类的快速分配器?

c++ - 意外错误 "no matching function for call to",需要不带参数的构造函数

c++ - Tilde ~ 在 Mac 上使用 fstream 时遇到麻烦

c++ - 成员(member)调用接线员<<

c++ - 如何使用 type_traits 检测字符串文字?

c++ - 我什至无法使用 wxWidgets 示例进行编译

c++ - TrayIcon 气球不显示

c++ - std::vector of struct:调整 vector 大小后结构成员的初始值是多少?

c++ - 如何使用 SWIG 和 CGO 将 io.Reader 转换为 std::istream?

c++ - 我写了一个 if/elseif 语句,但它只给了我第一个答案,为什么?