gpt4 book ai didi

c++ - 为什么内存管理很重要?

转载 作者:行者123 更新时间:2023-11-30 19:20:06 25 4
gpt4 key购买 nike

我知道这是一个非常愚蠢的问题,但我觉得我学习 C++ 的方式是错误的,过于忽视了内存。我总是听说 C++ 和 C 中的内存管理,但是它对于视频游戏或某些办公程序之类的东西有何重要性?

最佳答案

C 和 C++ 是大多数人认为低级(或具有低级部分)的语言,这允许您编写特定于硬件的代码。由于硬件通常对其输入有很多先决条件,因此您必须在内存布局、分配、填充等方面手动管理内存。

这是与硬件交互时所期望的,并且实际上是处理硬件所必需的。然而,在实现非硬件特定代码时,相同的实用程序和语言功能仍然适用。 IE。如果你想要一 block 动态内存,你必须显式地请求它,并显式地释放它(困难的部分)。在 C++ 中,解决这个问题的方法是使用类,它可以通过将内存管理全部抽象出来或提供垃圾收集(通常通过引用计数)来帮助您处理内存管理。

不清理垃圾的后果,即将资源返回给系统,也称为泄漏,是指系统最终会耗尽资源(因为资源通常是有限的,尽管有时是巨大的)。如果您的程序很小,并且执行时间有限,这可能不是问题,但您仍然应该处理您的资源,因为在程序终止后,托管环境实际上不需要为您这样做(尽管大多数系统会这样做,至少在内存方面)。

另请注意,您应该专注于管理资源。而不仅仅是内存。资源很多,但都是有限的,因此都需要管理。其他资源可以是;文件、IP 套接字、句柄、硬件设备……

对于特定的游戏,您必须期望在内存和文件访问方面有较高的资源使用率,而且您的游戏可能会运行相当长一段时间(假设它很好),因此需要处理资源管理变得至关重要!

我最好的建议是远离原始指针和手动内存管理(新/免费),而是使用标准容器(std::vector,类似)、值语义(即按值传递参数而不是按值传递参数)通过指针。),引用语义,如果您确实必须使用指针,请使用 std::unique_ptr 和 std::shared_ptr。 (这是假设您编写非硬件代码,例如游戏或文本处理器)。

Sean Paul 在 2013 年的本地化 session 上发表了关于避免指针的演讲,非常值得一看。我不记得演讲的名字了,但它在 Channel9 网页上免费直播。原生化的其他演讲也值得推荐!

关于c++ - 为什么内存管理很重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23069032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com