C++指针释放问题

2024-12-18 18:13:16
推荐回答(6个)
回答1:

反复地调用这个程序?指的是反复执行Test *ptest = new Test();还是反复的用另外一个程序调用这个main程序。

如果你是反复的执行Test *ptest = new Test();你的调用程序会产生内存泄露。
如果你反复的调用该main程序,由于你调用完程序后,main程序退出,其产生的对象和指针也会由系统自动回收。
这里的main程序指的是进程,不要搞混淆了

回答2:

不是。windows系统的话,会在你程序代码全部执行完毕之后,把程序执行过程中用到的各种资源(如果没有和其他程序共享的话)全部释放。所以只要你程序结束,就「もう何も怖くない」了

回答3:

是的,只要使用了new,必须使用相应的delete来释放。在实际使用中,为方便内存管理,可以不使用指针,直接在栈上声明对象即可,即

Test t;

内存会自动释放。

回答4:

是的,会不断浪费很多内存空间;
所以使用指针的一个良好习惯就是new和delete要一一配对

回答5:

如果只是针对你这个简单的程序来说,内存不会越来越多。因为main函数结束,系统会自动清理进程所用的内存,即使你没有回收系统也会主动回收。但如果你的程序一直在运行(main函数没有执行完),那么内存就会不断浪费。

回答6:

不是。
在程序结束时所有内存空间会被强制收回。