+ -
当前位置:首页 → 问答吧 → release下内存是如何分配的

release下内存是如何分配的

时间:2011-11-28

来源:互联网

C/C++ code

int main()
{
        char* p=new char[1];
        //char* p=NULL;
        // p=(char*)malloc(8*sizeof(char));
        // cout<<sizeof(p);
        p[0]='1';
        p[1]='2';
        p[2]='3';
        p[3]='4';
        //p[4]='5';
        //int k=atoi(p);
        delete [] p;
    
        cout<<p[0]<<endl;
        cout<<p[1]<<endl;
        cout<<p[2]<<endl;
        cout<<p[3]<<endl;
        p=NULL;
        char* pf=new char[4];
        cout<<pf[0]<<endl;
        cout<<pf[1]<<endl;
        cout<<pf[2]<<endl;
        cout<<pf[3]<<endl;
        //cout<<pf[4]<<endl;
        delete [] pf;
    return 0;
}


就这段代码cout时p[2],p[3],会输出3和4,下面的pf[2],pf[3]也是输出3和4.
开始的
C/C++ code

char *p=new char[1];

这里我试过长度为,4,5,8,9,只有当长度为9时,上面输出的p[2],p[3],pf[2],pf[3]才会是乱的,其他都是3,4,
在debug下没有问题,输出是空白的,但是release就有问题,怎么回事呢,看过网上关于relesa和debug对比的文章,都没讲到release内存分配与回收

作者: w263044840   发布时间: 2011-11-28

release下,看内存情况

作者: namelij   发布时间: 2011-11-28

一个未定义行为去追究它到底怎么回事儿,是不是有点不值啊

作者: mougaidong   发布时间: 2011-11-28

p 和pf可能挨着 也可能不挨着

作者: ghost5216   发布时间: 2011-11-28

请问release时如何看内存,不会呀
引用 1 楼 namelij 的回复:

release下,看内存情况

作者: w263044840   发布时间: 2011-11-28

我疑问的地方主要是为什么我delete [] p了,数据还在呢,而且只是一部分数据还在
引用 3 楼 ghost5216 的回复:

p 和pf可能挨着 也可能不挨着

作者: w263044840   发布时间: 2011-11-28