相关疑难解决方法(0)

为什么使用alloca()不被视为良好做法?

alloca()在堆栈上而不是在堆上分配内存,如同的情况一样malloc().所以,当我从例程返回时,内存被释放.所以,实际上这解决了我释放动态分配内存的问题.释放分配的内存malloc()是一个令人头痛的问题,如果不知何故错过会导致各种内存问题.

alloca()尽管有上述特征,为什么不鼓励使用?

c malloc stack allocation alloca

381
推荐指数
18
解决办法
12万
查看次数

brk()系统调用了什么?

根据Linux程序员手册:

brk()和sbrk()改变程序中断的位置,它定义了进程数据段的结束.

这里的数据段意味着什么?是仅仅将数据段或数据,BSS和堆组合在一起?

根据维基:

有时,数据,BSS和堆区域统称为"数据段".

我认为没有理由改变数据段的大小.如果它是数据,BSS和堆集合那么它是有意义的,因为堆将获得更多的空间.

这让我想到了第二个问题.在我到目前为止阅读的所有文章中,作者都​​说堆积增长,堆栈向下增长.但是他们没有解释的是当堆占用堆和堆栈之间的所有空间时会发生什么?

在此输入图像描述

c unix linux memory-management brk

173
推荐指数
4
解决办法
8万
查看次数

标签 统计

c ×2

alloca ×1

allocation ×1

brk ×1

linux ×1

malloc ×1

memory-management ×1

stack ×1

unix ×1