为什么在vc++编译环境里用到new和delete生成动态数组、释放内存时会有如下错误:
error C2065: 'new' : undeclared identifier
error C2143: syntax error : missing ';' before 'type'
error C2065: 'delete' : undeclared identifier
error C2146: syntax error : missing ';' before identifier 'pnGradX'
error C2146: syntax error : missing ';' before identifier 'pnGradY'
error C2146: syntax error : missing ';' before identifier 'pnGradMag'
请好心人能帮忙解决下,先谢谢了。

解决方案 »

  1.   

    工程的源代码文件后缀用的是.c吧,改成.cpp,new 和 delete 是c++中的保留字
      

  2.   

    这两天重新研究了下代码了,没能及时登录看到,我是在JM8.6中改的,程序好多,上面说的办法我都试了试,“工程的源代码文件后缀用的是.c吧,改成.cpp,new 和 delete 是c++中的保留字”这个建议我在那个环境改不了
      

  3.   

    void Canny(unsigned char *pUnchImage, int nWidth, int nHeight, double sigma,
    double dRatioLow, double dRatioHigh, unsigned char *pUnchEdge)
    {
    // 经过高斯滤波后的图象数据
    unsigned char * pUnchSmooth ;// 指向x方向导数的指针
    int * pnGradX ; // 指向y方向导数的指针
    int * pnGradY ;// 梯度的幅度
    int * pnGradMag ;pUnchSmooth = new unsigned char[nWidth*nHeight] ;
    pnGradX = new int [nWidth*nHeight] ;
    pnGradY = new int [nWidth*nHeight] ;
    pnGradMag = new int [nWidth*nHeight] ;// 对原图象进行滤波
    GaussianSmooth(pUnchImage, nWidth, nHeight, sigma, pUnchSmooth) ;// 计算方向导数
    DirGrad(pUnchSmooth, nWidth, nHeight, pnGradX, pnGradY) ;// 计算梯度的幅度
    GradMagnitude(pnGradX, pnGradY, nWidth, nHeight, pnGradMag) ;
    // 释放内存
    delete pnGradX ;
    pnGradX = NULL ;
    delete pnGradY ;
    pnGradY = NULL ;
    delete pnGradMag ;
    pnGradMag = NULL ;
    delete pUnchSmooth ;
    pUnchSmooth = NULL ;
    }
    新加进去的主函数就是这个了,单独新建工程没错误,就是加到block.c块中会有错误。