函数调用期间的内存管理

Dub*_*bby 5 c arrays pointers memory-management parameter-passing

我正在编写一个代码,涉及在C中处理维度[101] X [101]的2D数组.但是我在给定时间点使用的内存方面受到限制.

void manipulate(int grid_recv[101][101])
{
     //Something
}

void main()
{
   int grid[101][101];
   manipulate(grid);
}
Run Code Online (Sandbox Code Playgroud)

所以我假设我在main()中创建了一个数组网格[101] [101],然后将其传递给另一个函数进行操作.现在函数manipulate()将整个矩阵网格复制到grid_recv中,即通过这种传递我使用两倍的内存量(即网格大小的两倍)?

chr*_*hrk 9

在C中,数组不能作为参数传递给函数.

你实际做的是创建一个指向数组的指针.所以你使用的额外内存只是创建指针的大小.