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

来源:互联网 发布:js遍历html元素 编辑:程序博客网 时间:2024/06/05 00:32

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

分析:

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

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


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

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

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

0 0
原创粉丝点击