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]是非法的.
C/C++ code

int nCount = 10;
long *m_pl = new long[nCount];
for(int i = 0; i < nCount; i++ )
{
    m_pl[i] = i;
}

------解决方案--------------------
动态内存申请要指定大小 否则无法按照需要申请空间