栈的动态分配以及栈由谁管理的问题
我们都知道C语言提供了malloc等函数让程序员手动来分配释放堆空间,而栈空间一般是自动分配与释放的。这里我要补充两点:1.栈也是能动态分配的,C语言提供了alloca函数让程序员动态分配栈内存,且不需要手动释放,对没错,你来分配,主调函数返回时由编译器(生成的类析构程序)来给你擦屁股。但alloca不具可移植性, 而且在没有传统堆栈的机器上很难实现。当它的返回值直接传入另一个函数时会带来问题,因为他分配在栈上.由于这些原因,alloca不宜使用在必须广泛移植的程序中, 一般使用的很少,不管它.
原创
2021-07-01 19:55:24 ·
2261 阅读 ·
1 评论