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

原创 2007年09月24日 11:20:00

#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);

实践中考虑用boost::multi_array之类的现成的解决方案可能会更有效。

C++如何实现类对象只能动态分配或只能静态分配

C++如何实现类对象只能动态分配或只能静态分配 C++中建立类的对象有两种方式: (1)静态建立,例如 A a;      静态建立一个类对象,就是由编译器为对象在栈空间中分配内存。使用这种方法,...
  • YF_Li123
  • YF_Li123
  • 2017年07月11日 09:11
  • 575

C++动态分配数组

《C++教程》郑莉、李宁,人民邮电出版社,2010年第一版
  • code_xbug
  • code_xbug
  • 2014年11月09日 10:04
  • 5073

c++类和动态内存分配

动态内存和类 特殊成员函数 1默认构造函数,如果你没有定义构造函数 2默认的析构函数,如果你没有定义析构函数 3复制构造函数,如果你没有定义 4赋值运算符,如果你没有定义 5地址运算符,如果你妹你没有...
  • god_wen
  • god_wen
  • 2016年09月30日 21:19
  • 497

C/C++动态分配与释放内存的区别详细解析

转自http://www.jb51.net/article/41723.htm 1. malloc()函数 1.1 malloc的全称是memory allocation,中文叫动态内存分配。 ...
  • a573233077
  • a573233077
  • 2016年01月14日 16:59
  • 3422

必须要注意的 C++ 动态内存资源管理(六)——vector的简单实现

十六.myVector分析         我们知道,vector类将其元素存放在连续的内存中。为了获得可接受的性能,vetor预先分配足够大的内存来保存可能需要的更多元素。vector的每个添加元...
  • y1196645376
  • y1196645376
  • 2016年11月04日 14:30
  • 862

c++动态分配二维/三维数组的内存

转自http://blog.csdn.net/boylinux/article/details/7783871 本文主要目的是用c和c++分别实现动态分配二、三维数组。一般而言,在C中用malloc...
  • a573233077
  • a573233077
  • 2016年01月13日 16:17
  • 1005

C++动态分配内存new delete

动态内存分配 1.堆内存分配 : C/C++定义了4个内存区间:代码区,全局变量与静态变量区,局部变量区即栈区,动态存储区,即堆(heap)区或自由存储区(free store)。 堆的概念...
  • lanmolei814
  • lanmolei814
  • 2014年08月27日 22:32
  • 1010

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

一直对二维数组 动态分配问题比较模糊,今天来终结一下。 我们一般使用二维数组可以直接定义如下: #include using namespace std; int main() { int ...
  • c12345423
  • c12345423
  • 2016年11月06日 20:42
  • 581

C++ 何时使用动态分配(即使用new关键字)?何时使用指针?

动态分配 在你的问题里,你用了两种方式创建对象。这两种方式主要的不同在于对象的存储时间。当执行Object myObject;这句代码时,它作为自动变量被创建,这意味着当对象出了作用域时也会自动销毁...
  • huangbangqing12
  • huangbangqing12
  • 2015年08月11日 12:09
  • 1739

C++_动态存储空间的分配和释放

使用new申请空间: 特点:         1、没有名字,只能通过指针间接访问它们。         2、从堆中申请空间 分类: 变量:           语法:指针变量 = new ...
  • niubidexiebiao
  • niubidexiebiao
  • 2016年03月13日 17:35
  • 1195
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在C++中动态分配二维数组
举报原因:
原因补充:

(最多只允许输入30个字)