memory-leaks相关内容

CString到char *

我们在大多数代码中使用CString类。但是有时我们需要转换为char *。目前我们一直在使用variable.GetBuffer(0),这似乎工作(这主要发生在传递Csting到一个函数,其中的函数需要一个char *)。 然而,我们最近担心这是如何工作的,以及是否有更好的方法。 我理解它的工作方式是将一个字符指针传递到指向CString中的第一个字符的函数,并且一切正常。 我 ..
发布时间:2016-10-14 11:15:00 C/C++开发

C ++删除不会释放所有内存(Windows)

我需要帮助了解我的内存分配和释放在Windows上的问题。我现在使用VS11编译器(VS2012 IDE)与最新的更新(更新3 RC)。 问题是:我动态分配一个内存2立即释放它。仍然,在内存分配之前,我的进程内存使用量在分配前为0.3 MB,在分配上为259,6 MB(分配时为32768个64位整数(8字节)的数组,预期),在分配期间为4106,8 MB,但在解除分配内存不会下降到预期的0. ..

为什么不删除在C ++ 11中具有带有副作用未定义行为的析构函数的对象?

此回答引用了C ++ 11标准版3.8: 如果没有显式调用析构函数,或者如果没有使用delete-expression(5.3.5)来释放存储,那么析构函数不会被隐式调用,析构函数产生的边效应具有未定义的行为。 关于析构函数未被调用的部分是清楚的。现在假设跳过的析构函数有副作用,应该影响程序的行为。 为什么程序行为现在未定义?为什么不跳过副作用(因为析构函数不被调用),程序正常运 ..
发布时间:2016-10-14 10:59:44 C/C++开发

在c ++中检查内存泄漏的最好方法是什么?

我使用链接列表实现稀疏矩阵,手动检查泄漏和任何想法是没有乐趣的。 解决方案 valgrind profiler for Unix提供了一个不错的泄漏检测。 然而,这只是成功方法的一部分。另一部分是防止(即最小化)显式存储器处理。智能指针和分配器可以帮助大量防止内存泄漏。此外, 使用STL类: std :: list 已经提供了无泄漏的链表实现。 ..
发布时间:2016-10-14 10:47:57 C/C++开发

Visual C ++ - 内存泄漏检测

有任何建议吗?本SO文章介绍了视觉泄漏检测器,但我正在寻找其他工具。此外,请不要推荐此。 解决方案 我最近使用过视觉泄漏探测器它工作相当不错。这是非常简单的(只是包括 vld.h ),不需要任何工具。我发现我需要写一对夫妇的脚本,但是将输出解析为对我的目的更有用(它正在哭泣出一个体面的GUI)。注意新网站 - 该项目正在Codeplex上积极维护 - Codeproject链接很旧。 ..
发布时间:2016-10-14 10:20:17 C/C++开发

不是在动态分配的对象上调用delete总是内存泄漏?

从讨论开始这里,我想知道以下代码是否有内存泄漏: int main() { new int(); //或 int * x = new int(); return 0; } 我知道内存被操作系统回收, ?我相信它是。 什么定义了内存泄漏?我只能在标准中找到一个参考,这不是很有帮助。 编辑:我不想开始辩论 - “我认为...“不是我想要的那种 ..
发布时间:2016-10-13 11:51:27 C/C++开发

OpenSSL :: SSL_library_init()内存泄漏

最近我开始研究C ++中的内存泄漏,所以我可能会问一个幼稚的问题。 我有一个使用OpenSSL的c ++库 - 我的任务是检查是否有内存泄漏这个lib。我已经运行Visual Leak Detector检查mem泄漏了。 我看到调用 SSL_library_init(); 和 SSL_load_error_strings ); 是领先的泄漏 - 快速搜索显示在使用结束时,我必须调用以下 ..
发布时间:2016-10-13 11:17:55 C/C++开发

当程序退出时,泄漏的内存是否释放?

如果我编程了而不知道内存泄漏,应用程序终止,解决方案 是的,“内存泄漏”只是一个进程不再引用,因此不再可以释放的内存。 更新 在绝大多数情况下,操作系统将释放内存,就像Windows,Linux,Solaris等普通“风格”的情况一样。然而,重要的是要注意,专用环境(例如各种实时操作系统),程序终止时内存可能不会被释放。 ..
发布时间:2016-10-13 11:06:06 C/C++开发

在向动态分配对象的指针向量中删除元素之前,我需要做什么?

我有一个向量,我用对象的指针填充。我试图学习良好的内存管理,并有几个一般问题: 这是真的,当我完成了矢量, 为什么我不必在向量或任何其他变量上调用delete而不使用新语句,但delete必须是 如果向量在函数中声明返回(导致向量超出范围),C ++是否会为我释放指针的内存? 解决方案 是 实现使用模板内存分配器,为您处理内存管理,所以他们有点特别。但是,作为一般的经验法则 ..
发布时间:2016-10-11 23:11:17 C/C++开发

如何在C ++代码/项目中找到内存泄漏?

我是Windows平台上的C ++程序员。我使用Visual Studio 2008。 我通常在代码中出现内存泄漏。 通过检查代码找到内存泄漏,但它是繁琐的,并不总是一个好的方法。 由于我买不起付费内存泄漏检测工具,我希望你们建议最好的方法来避免内存泄漏。 我想知道程序员如何找到内存泄漏。 是否有任何标准或过程 您需要的东西 熟练使用C ++ C ++编译器 ..
发布时间:2016-10-11 22:49:09 C/C++开发

如何正确地取消初始化OpenSSL

在我的OpenSSL客户端我有问题,我选择链接libeay32和ssleay32静态,而不是动态我有大量的内存泄漏错误从视觉泄漏检测器。我在此主题中复制了OP中的命令,但我还剩下6个。然后我在同一个线程中添加了 sk_SSL_COMP_free(SSL_COMP_get_compression_methods()); ,由4LegsDrivenCat建议,只剩下4个,所有这些都显然与加载受信任的证 ..
发布时间:2016-10-11 22:41:18 C/C++开发

在双删除中会发生什么?

Obj * op = new Obj; Obj * op2 = op; delete op; delete op2; //这里发生了什么? 当你不小心删除时,会发生什么?有关系吗?是编译器会抛出一个错误? 解决方案 它导致未定义的行为。任何事情都可能发生。实际上,运行时崩溃可能是我期望的。 ..
发布时间:2016-10-11 22:03:37 C/C++开发

cpp - valgrind - 大小为8的读取无效

我越来越疯狂地理解valgrind错误。我有一个名为Matrix的模板类,它有一些重载的操作符等...做一些数学运算。 Matrixes在一个名为ExtendedKalmanFilter的类中使用。 这里是valgrind跟踪: == 3352 ==无效读取大小8 == 3352 ==在0x804CC8F:BOViL :: math :: Matrix :: o ..
发布时间:2016-10-11 21:40:17 C/C++开发

是内存泄漏“未定义的行为”类问题在C ++?

结果很多无辜的东西是未定义的行为在C + +。例如,一旦非空指针 delete 'd 甚至打印出指针值是未定义的行为。 泄漏肯定是坏的。 解决方案 内存泄漏。 没有未定义的行为。这是完全合法的泄漏内存。 未定义的行为:是动作标准具体不想定义和离开到实现,以便它是灵活的执行某些类型 内存管理定义明确。 如果您动态分配内存,但不释放内存。然后内存仍然是应用程序的管 ..
发布时间:2016-10-11 21:31:31 C/C++开发