内存空间
在运行环境上,通常线程可用的栈空间比堆空间要远小得多:栈空间一般只有几M,甚至小于1M,而堆空间往往高达几个G。因此,在程序中存储大块的数据时,必须要注意不能造成栈空间不足。通常当函数内的局部变量或函数形参占用空间超过1kB时,就要考虑是否该分配在堆上了
栈:
1. 函数内声明的局部变量
2. 按值传递的函数参数
3. std::array,作为局部变量时是存放在栈上的
堆:
1. new或者malloc方式申请的对象或内存
2. std::vector,实际数据都会被保存在堆上,栈中只保存了指针
3. std::string,对数据的管理方式与std::vector类似
浙公网安备 33010602011771号