C++中new和delete用法

来源:互联网 发布:2016无限申请淘宝小号 编辑:程序博客网 时间:2024/05/20 04:30

     学习了C++有半年了,中途看了又忘忘了又看。现在我开始学习Java,虽然说两种语言之间的语法基本是差不多的,但还是有很多的区别,从今天开始写博文,总结两种语言的用法,希望真的能够促进我的学习!


C++总new和delete的用法总结:

       new的操作是为了在内存中开辟新的内存空间,用起来还是比较简单的,需要注意的是new指令返回的是指向新建对象的指针。

int *p=new int;int *p=new int[3];int **p=new int[3][3];
delete是和new配套使用的,用于释放new开辟的内存空间

典型用法:

delete p;delete [] p;

今天在编写一个小程序用于验证C++和java的new用法区别时,遇到一个问题:

#include<iostream>using namespace std; int main() {     int *p = new int[3];     for(int i=0;i!=3;++i)     {          *(p+i)=i;     }     int i=0;      while((i++)!=3)     {          cout<<*p++;     }      cout<<"\n";delete p;delete [] p;     delete [] p;     return 0; }

当然输出程序报错,检查原因,发现是

cout<<*p++;

这一句出了问题,这里改动了p指针的指向位置,导致delete释放了位置的空间。

改正为:

cout<<*(p+i-1)

恢复正常。

这是要注意的问题,不能随便改动初始地址指针的指向(反正要保证delete的开始位置不是位置空间,比如说,要是能能够在delete运行之前把p的位置改回去,其实也是可以的),用累加器倒是个不错的主意。



第一次写博客,感觉写的东西都不能完全表达自己的想法啊。

还有这个程序编辑到底在哪里啊,找了半天找不到,郁闷!!!!!











0 0
原创粉丝点击