C ++ 中的指针数组有关问题
C ++ 中的指针数组问题!
下面代码编译通过,程序退出是出错!
//这样写有问题吗!我要动态数组
long *m_pl=new long[];
m_pl[0]=0;
m_pl[1]=1;
m_pl[2]=2;
//但我这样写没有问题,但不好根据实际数组大小分配内存!
long *m_pl=new long[4];
m_pl[0]=0;
m_pl[1]=1;
m_pl[2]=2;
以上两种写法的区别是什么,那种好?
------解决方案--------------------
你一个定义动态数组是没有分配数组大小啊。
------解决方案--------------------
恩,是这样的。。。
------解决方案--------------------
动态分配的数组大小可以为0,所以这里m_pl其实是一个大小为0的数组。
------解决方案--------------------
动态内存申请要指定大小
你的第一种方式申请没有指定大小,访问m_pl[i]是非法的.
下面代码编译通过,程序退出是出错!
//这样写有问题吗!我要动态数组
long *m_pl=new long[];
m_pl[0]=0;
m_pl[1]=1;
m_pl[2]=2;
//但我这样写没有问题,但不好根据实际数组大小分配内存!
long *m_pl=new long[4];
m_pl[0]=0;
m_pl[1]=1;
m_pl[2]=2;
以上两种写法的区别是什么,那种好?
------解决方案--------------------
你一个定义动态数组是没有分配数组大小啊。
------解决方案--------------------
恩,是这样的。。。
------解决方案--------------------
动态分配的数组大小可以为0,所以这里m_pl其实是一个大小为0的数组。
------解决方案--------------------
动态内存申请要指定大小
你的第一种方式申请没有指定大小,访问m_pl[i]是非法的.
- C/C++ code
int nCount = 10; long *m_pl = new long[nCount]; for(int i = 0; i < nCount; i++ ) { m_pl[i] = i; }
------解决方案--------------------
动态内存申请要指定大小 否则无法按照需要申请空间