释放了内存却继续使用它

释放了内存却继续使用它。 有三种情况:

(1)程序中的对象调用关系过于复杂,实在难以搞清楚某个对象究竟是否已经释放了内 存,此时应该重新设计数据结构,从根本上解决对象管理的混乱局面。

(2)函数的 return 语句写错了,注意不要返回指向“栈内存”的“指针”或者“引用”

, 因为该内存在函数体结束时被自动销毁。

(3)使用 free 或 delete 释放了内存后,没有将指针设置为 NULL。导致产生“野指针”。

 

 1 #include <iostream>
 2 #include <string.h>
 3 
 4 //main()函数
 5 /* run this program using the console pauser or add your own getch, system("pause") or input loop */
 6 using namespace std;
 7 int main(int argc, char** argv) {
 8         //声明字符数组
 9     char string[]="This is a test.";
10     int n;
11 
12     //获得字符串的长度
13     cout<<"string:"<<string<<endl;
14     n=strlen(string);
15     cout<<"The length of "<<"\""<<string<<"\": "<<n<<endl;
16 
17     //输入字符并计算其长度
18     cout<<"string:";
19     cin>>string;
20     n=strlen(string);
21     cout<<"The length of "<<"\""<<string<<"\": "<<n<<endl;
22     return 0;
23 }

 

posted @ 2018-08-03 13:36  borter  阅读(420)  评论(0编辑  收藏  举报