【发布时间】:2012-09-04 21:19:50
【问题描述】:
可能重复:
Structure of a C++ Object in Memory Vs a Struct
memory layout c++ objects
这可能是一个非常愚蠢的问题,但我还是会问。我很好奇对象在内存中的样子。显然,它必须包含所有成员数据。我假设对象的函数不会在内存中重复(或者我错了?)。内存中的 999 个对象都一遍又一遍地定义相同的函数,这似乎很浪费。如果所有999个对象的内存中只有1个函数,那么每个函数如何知道要修改谁的成员数据(我特别想在底层知道)。是否有一个对象指针被发送到幕后的函数?也许每个编译器都不一样?
另外,static 关键字对此有何影响?对于静态成员数据,我认为所有 999 个对象都将使用完全相同的内存位置存储它们的静态成员数据。这个存储在哪里?我想静态函数也只是内存中的一个位置,并且不必与实例化对象交互,我想我理解。
【问题讨论】:
-
这是一个很酷的问题
-
这是一个非常有趣的问题,但我认为在这里得到了回答:stackoverflow.com/questions/1632600/memory-layout-c-objects 和这里:stackoverflow.com/questions/422830/…
-
嗯...就像一堆0和1...
-
这件事有一整本书:Inside the C++ Object Model。考虑一下,无论答案中包含多少信息,还有很多东西需要学习。
-
我想知道将这个问题标记为重复的罪魁祸首/原因是什么其他问题...这两个“可能的重复”是 not 这个重复的(即“内存中C++对象的结构与结构”并没有解决OP关于如何布局函数的问题,并且“内存布局c++对象”被关闭为“太宽泛”并且没有任何非常有用的答案) ...
标签: c++