注册 登录
编程论坛 C++教室

为什么这是错?

床至只局 发布于 2015-05-15 19:56, 540 次点击
/*
malloc / free            //c
new / delete            //c++
*/
#include<iostream>
using namespace std;
#include<cstdlib>

int main()
{
    /*
    int *p;
    p=new int;
    *p=10;
    cout<<hex<<*p<<endl;
    delete p;
    system("PAUSE");
    */
    /*
    int *ptr=new int[10];
    delete []ptr;
    */
    int *pi=new int[2][3][4];//??
    delete []pi;
    system("PAUSE");
    return 0;
}
6 回复
#2
诸葛欧阳2015-05-15 19:59
这个内存申请不合法
#3
床至只局2015-05-15 20:21
回复 2楼 诸葛欧阳
那怎么申请合法呢?
#4
诸葛欧阳2015-05-15 21:12
如果要申请一个三维空间应该分级申请
#5
诸葛欧阳2015-05-15 21:17
int ***p=new **int[2];
for(int i=0;i<3;i++)
**p[i]=new int*[4];
for(int i=0;i<3;i++)
for(int j=0;j<4;j++)
*p[i][j]=new int;
大概是这样吧
#6
rjsp2015-05-18 09:29
new int[2][3][4]; 的类型是 int (*)[3][4]
所以应该写成 int (*pi)[3][4] = new int[2][3][4];
1