C++ 关于内存泄露问题。内存泄露是指用new 分配的内存没有用delete释放,如果未释放会有什么后果?

比如在程序开始定义了某个数组,但在运行过程中,在某步与该数组无关的语句执行后(我的程序中是赋值语句),该数组的某些元素显示无效,访问的话则提示越界。这和内存泄露有关系么?
是申请动态数组时出错,new[] 时未指定大小,然后引发了很多问题。。具体还没弄清楚。总之先感谢各位的回答。

越界是访问了不被允许的内存空间,也就是一段X内存地址是属于A进程,另一段Y地址是属于B进程,如果A进程突然间修改了Y地址上的内容,就会有可能导致系统崩溃
内存泄露,是指内存申请的空间,在使用完后,没有被释放。C/C++最显著特点是指针控制。但new的内存必须手工是否,如果用完后没有释放。那么就会浪费了系统资源,反复泄露的话,有可能导致系统资源不足崩溃
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-20
你家只有那么大,你买了越来越多的东西,旧的东西不丢掉会怎样?
会满的。内存未释放,可用内存慢慢就满了,其他程序运行不了,系统也越来越慢。
数组内存访问越界,还没有泄露呀本回答被提问者采纳
第2个回答  2012-05-20
一楼讲得很详细了,补充一点,C++的数组是一个指向第一个元素地址的指针,所有的元素是一段连续的内存地址,所以,数组越界会导致该指针指向别的内存地址,导致内存泄露
第3个回答  2012-05-20
操作系统会在应用程序结束后释放堆栈数据代码的内存,所以。。。。操作系统挺友善。。。。到这样是很不好的。你懂的
第4个回答  2012-05-20
二个如果

c++编程中,用new动态分配内存后,不使用delete,被分配的内存会永远丢失吗...
在C++中可以用new和malloc在堆上申请空间,并且必选相应地用delete和free进行释放空间,因为在C++编译器中,堆这部分存储空间是完全由程序员自己管理的,即由程序员自己分配和释放。如果在程序中用new和malloc申请了空间的话,但是在程序中没有手动用delete和free释放空间的话,在程序执行过程中以及程序执行...

C++中用new开辟了空间,忘记用delete了,造成的内存泄露该怎么解决(越...
如果不多的话无所谓,实际上不会有啥影响,随着程序的退出该空间会自动释放。如果程序不停的申请内存空间而又不释放的话,很有可能造成程序异常退出或者将内存消耗完毕。

在C++中,用new申请了指针指向某内存却不用delete销毁,直到整个应用程序...
会导致内存泄露。操作系统管理内存,是有一个资源队列的,用new申请一块内存时,从可用资源中取一块可用资源分配给应用程序。如果没有用delete归还系统,这块内存就不会返回资源队列,无法再分配给其他应用程序。就好像你从图书馆借书,结果看完后你自己把书放回书库,没有在图书管理系统中体现出来这本书...

C++ 中关于new和delete使用的一些疑问
这个要看你的程序。反正你要知道,new的内存如果不delete,该程序结束之前,这个内存不会释放掉。也就是说如果你的程序中常常new一些内存而不delete,你的程序占用的内存会不断增大。但是有一些全局数据,可以new了不delete,在程序开始运行时,创建这些数据,程序运行过程中使用这些数据,直到程序结束。A3....

C++中new开辟的空间不释放会怎样
不释放的结果就是内存泄露。 程序跑着跑着就没内存可用了,程序就挂了。毕竟内存是有限的嘛

c++ builder 什么情况会出现内存泄露
分配的内存空间没有被释放,就会导致内存泄露 内存没释放,最通俗,典型的例子:一个程序没有释放,会慢慢耗掉内存占用量,你会觉得程序和系统会很卡,但是你重启电脑后就没事了,当再次运行的时候又会出现这种情况。“一般定义的int a, 无论是全局的,还是局部的变量,包括静态的变量,容器类的对象...

C++类的对象内存的释放
如果是通过new那么 内存是在堆上分配 如果你不使用delete删除类 那么就会内存泄露 如果你说 不是new出来的 用指针指象 然后释放 不知道是不是这种情况 class A{};A newA_One;A* newPtr;newPtr = &newA_One;这个用指针指向是可以的,不过你不能用delete去释放它 因为这个对象的地址是在栈上面 ...

如何检查C++中的内存泄漏
1.分配完内存后忘记回收 2.代码有问题,造成想回收却无法回收,例如:int* p=new int;p=new int; \/\/p指针修改,原来申请内存的地址没有记录下来,于是无法释放 下面介绍如何检查内存泄漏:1.包含头文件和定义 define _CRTDBG_MAP_ALLOC \/\/并非绝对需要该语句,但如果有该语句,打印出来的是...

内存泄露简介
通常所说的内存泄漏,特指堆内存的泄漏。堆内存是指程序从堆中分配的、大小任意的内存块(大小可在程序运行时决定),并且在使用完毕后必须明确释放。程序通常通过malloc、calloc、realloc等函数(C++中通过new操作符)从堆中分配内存块,使用完毕后,程序需负责调用free或delete释放该内存块,以确保内存资源...

CS知识整理丨程序设计语言丨C++(三)
内存泄露是指动态分配的内存未被正确释放,导致程序运行时占用内存越来越多。检测方法包括使用内存泄漏检测工具,如 Valgrind 或 AddressSanitizer,它们能自动识别和报告内存泄漏问题。C++中的内存对齐是指数据按照特定边界排列,以优化性能和兼容性。基本原则是数据类型大小的整数倍对齐。内存对齐可避免不必要的...

相似回答
大家正在搜