我试着制作一个动态的5x5 int数组
int **data=malloc(5*5);
Run Code Online (Sandbox Code Playgroud)
但是在尝试访问它时会出现分段错误.
你需要为你想要制作的2d阵列分配内存(我认为你理解).但首先,您必须为指针存储2D数组的行分配空间.
int **data=(int**)malloc(sizeof(*data)*5); //Here 5 is the number of rows
Run Code Online (Sandbox Code Playgroud)
现在,您可以为每行分配空间.
for(int r=0;r<5;r++){
data[r]=(int*)malloc(sizeof(**data)*5);//here 5 is the width of the array
}
Run Code Online (Sandbox Code Playgroud)
如果你想要整个数组的连续内存块,你可以分配一个大小为25的单维数组,并像访问它一样data[r*5+c].
PS:而不是sizeof(*data)和sizeof(**data),你可以使用sizeof(int*)和sizeof(int)避免混淆*
PS:如果你没有使用C++,那么从malloc的返回值中删除强制转换更好(参见注释).
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |