您的位置:首页 > 编程语言 > C语言/C++

如何在C++中动态分配二维数组

2010-04-15 20:10 405 查看
#include <iostream>

#include <cstdlib>

#include <new>

template <typename T>

T **darray_new(int row, int col)

{

int size = sizeof(T);

void **arr = (void **) malloc(sizeof(void *) * row + size * row * col);

if (arr != NULL)

{

unsigned char * head;

head = (unsigned char *) arr + sizeof(void *) * row;

for (int i = 0; i < row; ++i)

{

arr[i] = head + size * i * col;

for (int j = 0; j < col; ++j)

new (head + size * (i * col + j)) T;

}

}

return (T**) arr;

}

template <typename T>

void darray_free(T **arr, int row, int col)

{

for (int i = 0; i < row; ++i)

for (int j = 0; j < col; ++j)

arr[i][j].~T();

if (arr != NULL)

free((void **)arr);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: