aer*_*ain 4 c++ memory callstack memory-management
如果我声明一个这样的矢量:
int main() {
vector<string> names;
int something_else_on_the_stack = 0;
names.add("John");
names.add("Annie");
}
Run Code Online (Sandbox Code Playgroud)
你怎么能真正"添加"元素到名称向量?如果名称是堆栈分配的,那么堆栈上的"something_else_on_the_stack"不应该在它之后吗?那么如何为已经分配的向量添加名称?
在内部,一个vector<string>意志很可能包括string*指向实际数据,可能还有两个size_t指示占用和保留内存的成员.其余的都将在堆上.因此,sizeof(vector<string>)是固定的,并且堆栈上的分配不会改变.
| 归档时间: |
|
| 查看次数: |
623 次 |
| 最近记录: |