【发布时间】:2015-04-17 01:55:26
【问题描述】:
以下是我对 C++ 内存管理的看法,欢迎评论。
内存可以分配在stack或heap中。
规则 1:
如果两个嵌套堆栈需要共享数据,请使用堆栈中的RAII分配内存,如下所示:
func1() {
Resource res; // res will be destructed once func1 returns
func2( &res );
}
规则 2:
如果两个并行栈需要共享数据(不是类成员字段),则必须在堆中分配内存,使用智能点或GC。例如:
func() {
shared_ptr<Resource> res = func1(); // returned a shared ptr to a memory allocated in func1
func2( res );
}
我说的对吗?
【问题讨论】:
-
您的问题到底是什么?至于什么,标准?因为严格来说 C++ 没有“堆栈”或“堆”的概念,至少在讨论内存模型时没有。
-
RAII,在涉及多态时使用shared_pointer
标签: c++ memory-management garbage-collection smart-pointers