堆和栈的区别-八股
堆:动态变化
优点:大小不固定,可以动态扩容(malloc free)
缺点:可能会产生内存泄漏,比如malloc的没有free;容易产生内存碎片;
线程不安全,堆内存可以被一个进程内的所有线程访问,多线程操作容易产生问题
栈:栈的大小在编译的时候就定好了,
优点:线程安全,栈空间存储的数据只能被当前线程访问;分配回收由系统来做
由于堆是动态,栈是静态,所以堆的效率要比栈慢;
数据size不确定用堆;确定的话用栈,提高运行速度;
数据大小非常庞大的情况下使用堆不使用栈;