arrays - 在 C 中创建和释放 3D 数组的内存
问题描述
我是 C 的初学者。我得到了一个制作我一直使用的 2D 数组内存的例子。示例如下:
complex** calloc_com2d(int value1, int value2){
complex **c;
int i;
c = (complex**)calloc(value1, sizeof(complex*));
if(c==NULL){
perror("MemError.\n");
exit(1);
}
for(i=0; i<value1; i++){
c[i] = (complex*)calloc(value2, sizeof(complex));
if(c[i]==NULL){
perror("MemError.\n");
exit(1);
}
}
return c;
}
制作二维数组内存的另一个版本如下:
complex **mat_new(int t,int r){
int i;
complex **tmp;
tmp = (complex**)calloc(t, sizeof(complex*));
for(i=0;i<t;i++){
tmp[i] = (complex*)calloc(r, sizeof(complex));
}
// MEM+=2;
return tmp;
}
问题是我不知道哪个更好用,如果我想为 3d 数组创建内存,我该怎么办?如果我想释放这个 3D 数组的内存,我该怎么办。
我试图写3D数组的内存。我不知道它是否顺利。我认为这不太正确。
complex*** calloc_com3d(int value1, int value2, int value3){
complex ***c;
int i, j;
c = (complex***)calloc(value1, sizeof(complex*));
if(c==NULL){
perror("MemError.\n");
exit(1);
}
for(i=0; i<value1; i++){
c[i] = (complex**)calloc(value2, sizeof(complex*));
if(c[i]==NULL){
perror("MemError.\n");
exit(1);
}
for ( j = 0; j < value2; j++) {
c[j] = (complex**)calloc(value3, sizeof(complex));
if(c[j]==NULL){
perror("MemError.\n");
exit(1);
}
}
}
return c;
}
非常感谢您的阅读。非常感谢您的帮助。
解决方案
推荐阅读
- javascript - 生成 Id 的服务器与客户端
- google-oauth - Google People API - 如何获取特定大小的用户个人资料照片,如果不是.jpg而是.png
- python - 熊猫布尔系列的元素逻辑自动组合
- html - 粘贴 html 签名时 Web 邮件输出出错(预期输出与原始输出的差异)
- c++ - 提升标准 C++ 中等效的共享容器迭代器
- sql-server - 创建一个触发器,从一个表中提取价格并防止进入另一个表
- python - 生成 FastText 多标签格式
- laravel - Laravel 设置状态列
- xamarin - Xamarin 表单:在 Type 中找不到具有正确签名的事件处理程序,
- c# - 如何使用实体框架选择多个列并使用 textBlocks 显示?