gcc编译出现错误:段错误?核心已转储
分析:
Linux为一个进程分配的堆栈只有8k左右,定义的数组过大,必然出现核心转储的提示。
其次,指针越界或者内存出现问题也会导致核心转储。
为了提高健壮性,防止堆栈越界,一般局部变量的空间不要超过1024byte,即255长度的int数组。
若要使用1024byte以上,可以使用malloc在堆中分配所需的空间。不过malloc,realloc,free会带来额外的系统开销。联想:我们用递归和迭代时,递归使用系统的栈,递归程序虽然方便书写而且有利于理解,但是很多时候带来的开销非常大,比如求厄密多项式;这时候我们选择用迭代(循环)来解决问题在效率上更好。
堆栈的内存都是有限的,想到内存池,内存管理,调度这些问题,尽量少使用malloc,free毕竟系统开销在那里摆着,特别是写服务器架构后台的时候,继续学习!继续巩固c,然后学apue!