gcc编译错误:段错误?核心已转储

gcc编译出现错误:段错误?核心已转储

分析:

Linux为一个进程分配的堆栈只有8k左右,定义的数组过大,必然出现核心转储的提示。

其次,指针越界或者内存出现问题也会导致核心转储。


为了提高健壮性,防止堆栈越界,一般局部变量的空间不要超过1024byte,即255长度的int数组。

若要使用1024byte以上,可以使用malloc在堆中分配所需的空间。不过malloc,realloc,free会带来额外的系统开销。联想:我们用递归和迭代时,递归使用系统的栈,递归程序虽然方便书写而且有利于理解,但是很多时候带来的开销非常大,比如求厄密多项式;这时候我们选择用迭代(循环)来解决问题在效率上更好。

堆栈的内存都是有限的,想到内存池,内存管理,调度这些问题,尽量少使用malloc,free毕竟系统开销在那里摆着,特别是写服务器架构后台的时候,继续学习!继续巩固c,然后学apue!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值