发布网友 发布时间:2022-04-20 16:02
共2个回答
热心网友 时间:2023-07-08 18:16
在c++里面,防止内存泄露,简单的说,就是如果new了,一定要delete。当然在实际的编程中不是所以人都能遵循这个原则,如果发生内存泄露,所以也可以debug的时候输出相应的信息,来检查内存泄露的具体位置。
在 windows 下使用 VC 编程时,我们通常需要 DEBUG 模式下运行程序,而后调试器将在退出程序时,打印出程序运行过程中在堆上分配而没有释放的内存信息,其中包括代码文件名、行号以及内存大小。
当我们new和delete的时候,不会有信息显示给我们,所以我们也可以重载他们,重载形式如下:void* operator new( size_t nSize, char* pszFileName, int nLineNum )
void* operator new[]( size_t nSize, char* pszFileName, int nLineNum )
void operator delete( void *ptr )
void operator delete[]( void *ptr )
如果感兴趣,可以搜索一下洪琨的那篇文章,有更详细的介绍。
热心网友 时间:2023-07-08 18:16
什么函数里面分配的内存,就要在什么函数结束的时候释放
如果还需要在其他地方使用,那么最好用一定的规则来记录一下哪些内存没有释放
例如,如果是全局的指针,那么都把他们初始化为NULL,然后程序结束的时候就依次判断这些是否为NULL,如果不是,那么就释放内存并把他们设置为NULL