首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于地图内存的有关问题

2013-03-25 
关于map内存的问题map的空间分配是在堆上还是栈上呢?因为map的大小可以很大,如果在栈上应该不合理吧,不知

关于map内存的问题
map的空间分配是在堆上还是栈上呢?
因为map的大小可以很大,如果在栈上应该不合理吧,不知道这样理解对不对?
对于一个函数int a(map<int,int > m)
在函数开始是像变量一样是复制过去,然后再函数结束再释放的吗?
这样使用需不需要考虑内存泄露的问题。
如果不是在堆上,那只能是栈克隆了吧.
[解决办法]
操作系统分配内存在堆还是栈上,不会以程序员的数据结构为意志而转移。所以,不管你是map,还是mmap,还是very very super map,new出来的还是在堆,局部就还是在栈上。

至于合理不合理,就要看程序员的设计了,他完全可以把大结构弄成指针塞进map嘛,比如map<key1,BigSt*>

int a(map<int,int > m)这个函数的入参,当然是在开始时入栈,结束时出栈哦,不要以为map有特权哦。

所以,程序员在设计函数的时候也要考虑考虑栈大小,比如超大结构最好用指针,莫定义巨型数组,递归层次不要太深等,这些都是为了防止函数栈不足而崩溃。
[解决办法]
定义为指针 在堆上

热点排行