C简单实现动态2维数组

原载:http://www.chinaunix.net/jh/23/946840.html

struct xxx **x;
x = (struct xxx **) darray_new(5, 4, sizeof(struct xxx));

...
这里就可以用 x[1][3]  ... x[0][3] ... 来操作了:)
...

darray_free(x);



#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void **darray_new(int row, int col, int size)
{
void **arr;

arr = (void **) malloc(sizeof(void *) * row + size * row * col);
if (arr != NULL)
{
void *head;

head = (void *) arr + sizeof(void *) * row;
memset(arr, 0, sizeof(void *) * row + size * row * col);
while (row--)
arr[row] = head + size * row * col;
}
return arr;
}

void darray_free(void **arr)
{
if (arr != NULL)
free(arr);
}  
原文地址:https://www.cnblogs.com/swordzj/p/2034745.html