扩展C代码以动态分配3D数组

扩展C代码以动态分配3D数组,c,arrays,3d,malloc,C,Arrays,3d,Malloc,我想根据以下创建2D数组的代码动态分配3D数组,任何建议都会非常有用: void** malloc_2d (size_t nrows, size_t ncols, int elementsize) { size_t i; void ** ptr; if ( (ptr = (void**)malloc(nrows * sizeof(void *))) == NULL ) { fprintf(stderr, "malloc_2d: out of memory\n"); exit(1);

我想根据以下创建2D数组的代码动态分配3D数组,任何建议都会非常有用:

void** malloc_2d (size_t nrows, size_t ncols, int elementsize) {
size_t i;
void ** ptr;

if ( (ptr = (void**)malloc(nrows * sizeof(void *))) == NULL ) {

  fprintf(stderr, "malloc_2d: out of memory\n");

  exit(1);

}


 if ( (ptr[0] = malloc(nrows * ncols * elementsize)) == NULL ) {

  fprintf(stderr, "malloc_2d: out of memory\n");

  exit(1);

 }

for (i=1; i<nrows; i++) 

  ptr[i] = (char*)ptr[0] + i * ncols * elementsize;

 return ptr;
 }
void**malloc\u 2d(大小\u t nrows、大小\u t ncols、内部元素大小){
尺寸i;
无效**ptr;
if((ptr=(void**)malloc(nrows*sizeof(void*)))==NULL){
fprintf(stderr,“malloc_2d:内存不足\n”);
出口(1);
}
if((ptr[0]=malloc(nrows*ncols*elementsize))==NULL){
fprintf(stderr,“malloc_2d:内存不足\n”);
出口(1);
}

对于(i=1;iSo i宣布无效***ptr;并添加了一个ptr[1]=malloc。。。。