小编Man*_*nta的帖子

堆内存损坏

int main()
{
    char *p = new char[100];
    strcpy(p, "Test");
    cout << "Before heap corruption: " << p << endl;
    p[150] = '\0';

    cout << "after heap corruption: " << p;

    delete p;

    getchar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在上面提到的代码中,我在一个不是我的内存位置写'\ 0',即使这样也没有抛出异常.如果使用注释delete p运行上面的代码,则不会抛出任何异常.但是如果它被取消注释,则抛出附加的异常.因此,删除可验证内存所有权.那么,我是否可以知道eaxctly删除是如何工作的以及为什么在写出内存块时有很多验证

在此输入图像描述

c++ windows heap memory-management

-2
推荐指数
1
解决办法
542
查看次数

标签 统计

c++ ×1

heap ×1

memory-management ×1

windows ×1