我不明白的是:
>实例方法的堆栈框架位于何处?它们是否位于实例堆栈框架内部或存储在其他位置?
>是否只为该类的许多实例创建了一个实例方法堆栈框架
>如果是这样,那么如果同一个类的两个对象同时从不同的线程调用相同的函数呢?
在C中声明类类型的局部变量时,只能获取对象本身的内存.没有分配额外的内存来保存该对象的成员函数 – 如上所述,成员函数内存要么放在数据段中,要么在调用成员函数时根据需要进行分配.具体来说,如果在已声明的对象上调用成员函数,则程序将为该成员函数分配新的堆栈帧,调用该函数,并在函数返回时清理内存.成员职能没有额外的“溢价”;它们实际上并不影响对象的大小(尽管在您的类中有一个或多个虚函数可能会增加对象大小的一次性成本).
当然,这都是依赖于实现的;原则上的实现可以分配额外的空间来存储对象内的成员函数,但据我所知,没有标准的C实现可以做到这一点. (如果您知道vtable是什么,则该对象可能具有vtable指针,但不是所有vtable条目).
希望这可以帮助!
总结以上是内存溢出为你收集整理的c – 线程模型和类实例内存管理全部内容,希望文章能够帮你解决c – 线程模型和类实例内存管理所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)