delete运算符的一个小坑

今天在写程序的时候,用到了delete运算符,发现了一点小问题。

#include <iostream>
int main() {
    auto p = new int;
    auto ptr = p;
    std::cout << p << ' ' << ptr << '\n';
    delete p;
    std::cout << p << ' ' << ptr;
}

这个代码按照道理来说不应该是四个相同的值吗?可是事实证明我错了...

下面是在VS2017环境下编译的

下面是在DevC++下编译的

下面是在Ubuntu-Win10子系统下用g++编译的

好吧,估计是VS的事了,以后会多加注意的...

这个还没完呢!!!

你觉得用free函数会怎样,那么答案就是——不会改变!!!!

真的好坑!!!

以后用VS编程要小心一点了...

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • C++运算符重载-下篇 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符和二元逻辑运算符4...
    Haley_2013阅读 5,330评论 0 49
  • new和delete的内部实现 C++中如果要在堆内存中创建和销毁对象需要借助关键字new和delete来完成。比...
    欧阳大哥2013阅读 19,015评论 1 16
  • (JG-2014-08-20)(前半部分经过网上多篇文章对比整理)(后半部分根据ExceptionalCpp、C+...
    JasonGao阅读 10,946评论 2 23
  • 第一章 1.Linux是一套免费使用和自由传播的类UNIX操作系统,它可以基于Intel x86系列处理器以及Cy...
    yansicing阅读 10,819评论 0 9
  • 这篇文章是我之前翻阅了不少的书籍以及从网络上收集的一些资料的整理,因此不免有一些不准确的地方,同时不同JDK版本的...
    高广超阅读 15,954评论 3 83

友情链接更多精彩内容