2 u011675210 u011675210 于 2016.01.22 17:01 提问

malloc函数出现段错误可能是哪些原因引起的?

如题,code block环境下,代码运行了一段时间后在某处进行malloc()函数返回了段错误。请问malloc函数出现段错误可能是哪些原因引起的?

5个回答

qq_27183003
qq_27183003   Ds   Rxr 2016.01.22 18:51

没有足够内存分配,或者malloc参数错误。

devmiao
devmiao   Ds   Rxr 2016.01.22 23:17

段错误也可能是指针无效。

John_ToStr
John_ToStr   Rxr 2016.01.23 16:14

malloc 分配内存非法,后者分配出错

oyljerry
oyljerry   Ds   Rxr 2016.01.22 23:15

程序有内存泄漏 导致新空间分配失败 malloc的内存不需要的时候要free

91program
91program   Ds   Rxr 2016.01.22 17:04

malloc 没有足够的内存分析了,或者看看 malloc 返回的错误值是多少。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
用malloc引发的段错误---malloc 与 calloc的区别
前几天找bug找了好久,都没有发现问题所在,昨晚突然发现是malloc分配的空间没有初始化引发的。 下面谈谈malloc与calloc的区别。 函数malloc()和calloc()都可以用来动态分配内存空间,但两者稍有区别。     malloc()函数有一个参数,即要分配的内存空间的大小: void *malloc(size_t size);   calloc()函数有两个参数,
malloc函数分配内存失败的原因及解决方法
本文简单描述了malloc()函数分配内存失败的原因以及解决方法,对指针越界造成的分配内存失败做了详细探讨,对之后的内存管理及指针使用很有帮助。
malloc失败的另一种原因
在C语言中, 执行到malloc程序core的时候, 一般人的第一反应是内存空间不足. 常见的代码为: #define SIZE 100 int* p = (int*)malloc(100*sizeof(int));但是, 事实情况是, 内存还多的很. 不可能是空间的原因. 有的C编译器对没有声明的函数, 是不报错的(有的连警告都没有, C编译器认为程序员永远是正确的). 糟糕的是, C编
牛客网“程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)”错误的可能原因
牛客网编程提示“程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)“的可能原因
引起进程调度的原因有以下几类
引起进程调度的原因有以下几类 进程调度发生在什么时机呢?这与引起进程调度的原因以及进程调度的方式有关。 (1)正在执行的进程执行完毕。这时,如果不选择新的就绪进程执行,将浪费处理机资源。 (2)执行中进程自己调用阻塞原语将自己阻塞起来进入睡眠等状态。 (3)执行中进程调用了P原语操作,从而因资源不足而被阻塞;或调用了v原语操作激活了等待资源的进程队列。 (4)执行中进
malloc失败的一个原因
最近帮同学调一段程序,调试发现,程序其中的一个malloc函数返回值为空,我们知道如果申请分配的内存空间太大,系统无法获得符合要求的内存块,malloc函数会返回NULL,而这个程序中申请的空间是很小的,系统内存也很充裕,所以问题不在这儿。          后来仔细推敲代码,发现程序中在返回值为NULL的malloc之前,有过若干次的malloc,然而对申请到的空间初始化的范围大小超过了前边m
malloc/free内存碎片的产生原因
malloc和free大量使用后回造成内存碎片,那么这种碎片形成的机理是什么?如果机理是申请的内存空间大小(太小)所形成的,那么申请多大的区域能够最大限度的避免内存碎片呢(这里的避免不是绝对的避免,只是一种概率)?       内存碎片一般是由于空闲的连续空间比要申请的空间小,导致这些小内存块不能被利用.产生内存碎片的方法很简单,举个例:          假设有一块一共有100个单位的连
Linux环境下使用memcpy函数遇到段错误问题
Linux 环境下编写以下程序,会出现段错误:#include "stdio.h" #include <stdlib.h> #include "string.h" void main() { char Data[] = "qwertyuiop"; char *data ; memcpy (data,Data,sizeof(Data) ); print...
sscanf 函数引起的段错误
#include int main(int argc,char *argv[]) { int i, idx = 0; char str[20]; sscanf("aaa bbb ccc", "%*s %s%n", str, &idx); printf("%s\n%d\n", str, idx); return 0; }运行时,提示段错误。
会出现段错误的几种情况
(1)、使用了野指针