【发布时间】:2019-01-10 23:16:41
【问题描述】:
这是一个相当笼统的问题,但我还没有为 C++ 找到明确而具体的答案。
我有一个包含许多方法的类,它可能有大量实例同时实现,同时调用几个对时间要求严格的方法 (
现在动态方法与静态方法或非类方法的内存成本如何?在任一选项中都有大量实例时是否存在内存不足的风险?
如果我错过了准确回答此问题的参考资料,请原谅我或给我提示如何继续,提前致谢!
【问题讨论】:
-
测量。 [[[[[[
-
除了“在任一选项中是否存在大量实例时内存不足的风险?”,这个问题对我来说没有意义。
-
与其尝试描述一些代码,不如尝试创建一个Minimal, Complete, and Verifiable Example 来显示我们。也请read about how to ask good questions和this question checklist。
-
方法(静态,非类)不会影响内存消耗。它的
sizeof(a instance) + [all the dynamic memory allocated inside instance]实际上会影响程序的总内存消耗。如果您将方法声明为非类,那么您打算如何将类中存在的所需数据传递给这些非类方法? -
切换到非类我需要更改方法签名,添加实例引用以访问其成员。我需要尝试看看它是如何编译和执行的。关于内存消耗,我猜一个实例必须为其自己的成员保留一些专用空间,包括属性、指针的内存分配、堆栈地址、异常分支等,而对于静态或非类方法,该内存空间将仅分配一劳永逸。我将用 sizeof(type) 测试和测量这一点。
标签: c++