最近帮同学调一段程序,调试发现,程序其中的一个malloc函数返回值为空,我们知道如果申请分配的内存空间太大,系统无法获得符合要求的内存块,malloc函数会返回NULL,而这个程序中申请的空间是很小的,系统内存也很充裕,所以问题不在这儿。
后来仔细推敲代码,发现程序中在返回值为NULL的malloc之前,有过若干次的malloc,然而对申请到的空间初始化的范围大小超过了前边malloc申请的大小,改正之后程序运行正常。
最近帮同学调一段程序,调试发现,程序其中的一个malloc函数返回值为空,我们知道如果申请分配的内存空间太大,系统无法获得符合要求的内存块,malloc函数会返回NULL,而这个程序中申请的空间是很小的,系统内存也很充裕,所以问题不在这儿。
后来仔细推敲代码,发现程序中在返回值为NULL的malloc之前,有过若干次的malloc,然而对申请到的空间初始化的范围大小超过了前边malloc申请的大小,改正之后程序运行正常。