malloc失败的另一种原因

在C语言中, 执行到malloc程序core的时候, 一般人的第一反应是内存空间不足. 常见的代码为:

#define SIZE 100
int* p = (int*)malloc(SIZE * sizeof(int));
但是, 事实情况是: 内存还多的很.

有的C编译器对没有声明的函数, 是不报错的(有的连警告都没有, C编译器认为程序员永远是正确的). 糟糕的是, C编译器默认认为函数的返回值是int类型. 如果没有加以下头文件的话:

#include <stdlib.h>

程序把malloc的返回值强转成int, 然后再转成int*. 于是程序core了.

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页