vs2012无法为数组动态分配内存

       int N=0  
     for(int i=0;i<16;i++)
{
    if(M[i]!=0)
        N++;
}   
double *m=new double [N]; 


   for(int i=0,j=0;i<16;i++)
{ if(M[i]!=0)
    {m[j]=M[i];
              j++;}
}           

C++这部分代码大概是这样,最后循环中的m[j]只能获得第一个值,这该怎么解决。。。在我现在固定的数值中m[j]应该会有11个,也就是N=11才对。。。
 if(M[i]!=0)
 {
        m[j]=M[i];
    j++;
  }

j++; -> 只有满足条件才会被执行到。