常见的delete误删地址!!

#include<iostream>
#include"Coordinate.h"
using namespace std;
int main()
{
   coor[0].m_iY=5;
//  cout<<"栈中实例化"<<endl<<coor[0].m_iX<<" "<<coor[0].m_iY<<endl;
        Coordinate *p=new Coordinate[3];
         Coordinate *k=p;
        p->m_iX=7;
        p[0].m_iY=9;
 //     cout<<"堆中实例化"<<endl<<p[0].m_iX<<" "<<p[0].m_iY;
        p++;
        p->m_iX=11;
        p[1].m_iX=15;
        (++p)->m_iY=17;
        for(int i=0;i<3;i++)
        {
        cout<<"栈中实例化"<<i<<":"<<endl<<coor[i].m_iX<<" "<<coor[i].m_iY<<endl;
        }
        for(int j=0;j<3;j++)
        {
        cout<<"堆中实例化"<<j<<":"<<endl<<p->m_iX<<" "<<p->m_iY<<endl;
        p--;
        }
  delete []k;//这里为什么要用k,因为此时的p已经不是原来的p,指向的地址也
不是刚刚定义的地址,不可以删除!!!!!!!
  k=NULL;
}
~
时间: 2024-10-08 18:25:43

常见的delete误删地址!!的相关文章

delete误删数据使用SCN恢复

今天闲来无事,测试一下之前误删数据使用SCN恢复的经过.本人不喜欢理论那一大套长篇概论,直接开始试验:首先查看当前SCN值,如果删之后没有查scn值.可以根据scn当前值往前调试,只要保证.你delete删除之后中间没有其他操作. SELECT dbms_flashback.get_system_change_number FROM dual; SELECT CURRENT_SCN FROM V$DATABASE; 知道当前SCN号了.SCN一直在增长,这个没啥,然后查看某一个表数据: sele

汇总博客常见的api接口地址(windows live write)

1. cnblogs 日志地址,直接输入 http://www.cnblogs.com/xxxxx/ api接口 http://www.cnblogs.com/xxxx/services/metablogapi.aspx 2. 51cto http://xxxxxx.blog.51cto.com/ Metaweblog API: http://xxxxxx.blog.51cto.com/xmlrpc.php 3. csdn http://blog.csdn.net/xxxxxx Metawebl

程序员常用不常见很难得的地址大全,博主很辛苦

网址分类导航:       简单设置与开发支持       桌面程序可能用的到        美工可能会看的         前端人员可能用的       简单工具         常用软件下载           数据库工具        游戏开发          其他语言友情链接        jQuery框架       .NET要用到的部分解决方案框架       程序员的网站       稍微偏放松点      IT方面最新的科技新闻      IT培训课程系列的网站    程序员找

常见博客api地址

常用博客 API地址 新浪博客 http://upload.move.blog.sina.com.cn/blog_rebuild/blog/xmlrpc.php 网易博客 http://os.blog.163.com/api/xmlrpc/metaweblog/ 自建Wordpress站点 http://您的博客地址/xmlrpc.php 博客园cnblogs 博客园 - 开发者的网上家园<您的用户名>/services/metaweblog.aspx 自建zBlog站点 http://you

MySQL误删数据救命指南

预防误操作导致文件/数据丢失的建议: 1.欲删除文件时,将rm命令改成mv,可在系统层面将rm命令做个alias(或参考Windows / Mac OSX做法,删除文件时先进回收站).2.删除数据库.表时,不要用drop命令,而是rename到一个专用归档库里:3.删除表中数据时,不要直接用delete或truncate命令,尤其是truncate命令,目前不支持事务,无法回滚.4.用delete命令删除数据时,应当先显式开启事务,这样误操作时,还有机会进行回滚.5.要大批量删除数据时,可以将这

Effective C++ 条款50 了解new和delete的合理替换时机

1. 替换标准库提供的operator new或operator delete通常基于以下三个理由: 1). 用来检测运行上的错误.将"new 所得内存"delete掉却不幸失败会导致内存泄露,多次对同一块"new所得内存"施行delete会导致未定义行为,如果让operator new持有一串动态分配所得地址,而operator delete将地址从中移走,就可以很容易检测出上述错误;各式各样的变成错误会导致数据"overruns"(写入点在分

IP地址详解-你,是谁?

一.简介 在生活中我们使用具有上网功能的电子设备都有IP地址,就跟每个人都有自己的名字一样.IP地址分为IPV4 IPV6,我们所说的的IP地址指的是IPV4的地址. 只要记住你的名字 不管你在世界的哪个地方 我一定会,去见你. --新海诚<你的名字> IPV4( Internet Protocol Version 4 ) 互联协议版本4,有版本V4之前就有IPV1 IPV2 IPV3,同样有IPV5 IPV6,IPV5在实验中已经夭折,替代IPV4的将是IPV6.(IPV4地址比如:192.

Item 52:写了placement new就要写placement delete

Item 52: Write placement delete if you write placement new "placement new"通常是专指指定了位置的new(std::size_t size, void *mem),用于vector申请capacity剩余的可用内存. 但广义的"placement new"指的是拥有额外参数的operator new. new和delete是要成对的,因为当构造函数抛出异常时用户无法得到对象指针,因而delete

用于数组的delete p324

delete 对象地址; delete 首先调用待清除对象的析构函数,然后释放内存 如果delete一个void指针,唯一发生的事情就是释放了内存.因为通过void指针,无法知道对象的类型,就无法调用其析构函数. delete []books; []告诉编译器,books实际上是一个对象数组的起始地址.该代码的任务是,把数组创建时存放在某处的数组元素个数取回,并为数组的所有对象调用析构函数. 1 #include <iostream> 2 #include <string> 3 4