memory-management相关内容

删除 NULL 指针是否安全?

删除NULL指针安全吗? 这是一种好的编码风格吗? 解决方案 delete 无论如何都会执行检查,因此在您这边检查会增加开销并且看起来更丑陋.非常好的做法是在 delete 之后将指针设置为 NULL(有助于避免重复删除和其他类似的内存损坏问题). 如果 delete 默认情况下将参数设置为 NULL,就像在 中一样,我也很高兴 #define my_delete(x) { ..

delete[] 是否等于删除?

IP_ADAPTER_INFO *ptr=new IP_ADAPTER_INFO[100]; 如果我免费使用 删除指针; 会不会导致内存泄露,如果不是那为什么? 这是VS2005生成的反汇编代码 ;删除指针;0041351D mov eax,dword ptr [ptr]00413520 mov dword ptr [ebp-0ECh],eax00413526 mov ecx,dwo ..
发布时间:2022-01-30 16:20:10 C/C++开发

为什么 C++ 程序员应该尽量减少“新"的使用?

我偶然发现 Stack Overflow 问题 使用 std::list 时 std::string 的内存泄漏,其中一条评论这样说: 停止使用 new 这么多.我看不出你在任何地方使用 new 的任何原因你做到了.您可以在 C++ 中按值创建对象,它是其中之一使用该语言的巨大优势. 您不必分配一切都在堆上. 不要像 Java 程序员那样思考. 我不太确定 ..
发布时间:2022-01-30 15:52:35 C/C++开发

编译器何时以及为什么会在 malloc/free/new/delete 上将内存初始化为 0xCD、0xDD 等?

我知道编译器有时会使用某些模式初始化内存,例如 0xCD 和 0xDD.我想知道的是何时以及为什么会发生这种情况. 何时 这是特定于使用的编译器吗? malloc/new 和 free/delete 在这方面的工作方式相同吗? 它是特定于平台的吗? 会不会出现在其他操作系统上,例如 Linux 或 VxWorks? 为什么 我的理解是这只发生在Win32调 ..
发布时间:2022-01-30 15:52:23 C/C++开发

使用调用 API 的 JNI 内存管理

当我使用 JNI 方法构建一个 java 对象时,为了将它作为参数传递给我使用 JNI 调用 API 调用的 java 方法,我如何管理它的内存? 这是我的工作: 我有一个 C 对象,它有一个比 free() 更复杂的析构方法.这个 C 对象要与一个 Java 对象关联,一旦应用程序完成了 Java 对象,我就不再需要 C 对象了. 我正在像这样创建 Java 对象(为清楚起见, ..
发布时间:2022-01-25 21:02:02 Java开发

广告与广告AdMob 占用大量内存

我刚刚完成了针对 iOS 平台的新游戏的编码,现在我决定是时候在屏幕底部集成 iAd/AdMob 横幅了.我已经完成了实施,并且 iAd 出现了,如果它失败了,那么它将被 AdMob 横幅所取代.这很棒,但是我检查了应用程序的内存消耗,在 iAd/AdMob 集成之前,我的应用程序使用大约 19MB 的内存运行 - 使用 iAd/AdMob 集成时,它使用超过 50MB 的内存运行.我对此有两个问 ..
发布时间:2022-01-25 15:42:17 移动开发

我什么时候使用 xdata?

我是嵌入式系统编程的新手.我正在开发使用 8051 芯片组的设备.我在示例程序中注意到,在定义变量时,有时它们使用关键字 xdata.像这样…… static unsigned char xdata PatternSize; 而其他时候 xdata 关键字被省略. 我的理解是 xdata 关键字指示编译器将该变量存储在外部、闪存、内存中. 在什么情况下我应该使用 xdata ..
发布时间:2022-01-25 12:58:36 其他开发

什么容器来存储唯一值?

我遇到了以下问题.我有一个平均每秒运行 60 帧的游戏.每一帧我都需要将值存储在一个容器中,并且不能有重复项. 它可能每帧必须存储少于 100 个项目,但插入调用的数量会更多(并且由于它必须是唯一的而许多被拒绝).只有在帧的末尾我才需要遍历容器.因此,每帧大约有 60 次容器迭代,但插入次数更多. 记住要存储的项目是简单的整数. 我可以使用很多容器,但我无法决定选择什么.性能是其 ..
发布时间:2022-01-24 21:06:24 C/C++开发

stl容器如何被删除?

stl中的vector之类的容器对象如何被销毁,即使它们是在堆中创建的? 编辑 如果容器持有指针,那么如何销毁这些指针对象 解决方案 指针的 STL 容器不会清理指向的数据.它只会清理保存指针的空间.如果你想让向量清理指针数据,你需要使用某种智能指针实现: {std::vectorv1;v1.push_back(new SomeClass());std ..
发布时间:2022-01-24 20:42:51 C/C++开发

std::scoped_allocator_adaptor 的目的是什么?

在 C++11 标准中,我们在动态内存管理库中有 std::scoped_allocator_adaptor.这个类最重要的用例是什么? 解决方案 如果你想要一个字符串容器,并且想要对容器及其元素使用相同的分配器(因此它们都被分配在同一个区域中,如 TemplateRex描述)然后您可以手动执行此操作: template使用分配器 = SomeFancyAllocator;使用 S ..
发布时间:2022-01-24 20:32:42 C/C++开发

Java 应用程序终止时使用的资源是否被释放?

Java 应用程序可能使用在不再需要时应关闭的 IO 流、套接字或数据库连接. 但是,应用程序可能会被终止(例如通过终止进程).在这种情况下是否会释放所有使用的资源?谁来释放它们:OS 还是 JRE? 解决方案 如果你的软件没有做好资源管理,会出现以下情况: 在运行时:JVM 将在您的程序执行期间尝试关闭打开的流(如果它们看似未使用)(在垃圾收集周期期间), 在程序的终止点: ..
发布时间:2022-01-24 15:19:17 Java开发

变量似乎在每次循环迭代时都会改变大小 - 什么?

在编写以下 Matlab 代码时: 对于 ii=1:nx(ii) = foo(ii);% foo 是 ii 的一些函数,不能向量化.结尾 我收到以下 m-lint 警告: 变量 x 似乎在每次循环迭代时都会改变大小 我的问题: 这个警告是什么意思? 为什么每次迭代都改变变量大小是一件坏事? 如何解决这个问题? 此问题与 此问题 不同,因为它处理的是预分配的更一般方面 ..
发布时间:2022-01-24 11:20:41 其他开发

在咖啡脚本中构建类时,是否有理由不使用实例方法的粗箭头?

在 coffeescript 中构建类时,是否有理由不将粗箭头用于实例方法? 编辑:那好吧!很好的回复!:) 总结起来,问题是: - 占用更多内存 - 无法修补 - 提出问题,为什么要使用这种方法? 约定: - 绑定函数时要明确. - 在构造函数中声明粗箭头方法. - 尽可能多地使用,而不是在类声明中. 解决方案 是的,有理由不总是使用粗箭头.事实上,我赞成 neve ..
发布时间:2022-01-24 10:17:51 其他开发