Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用malloc动态分配内存,我在尝试用cygwin编译时收到一个错误_C - Fatal编程技术网

使用malloc动态分配内存,我在尝试用cygwin编译时收到一个错误

使用malloc动态分配内存,我在尝试用cygwin编译时收到一个错误,c,C,我试图为一个3×5的二维数组分配内存。编译此代码时,我在cygwin终端中收到以下错误: 2darraymalloc.c:在函数“main”中: 2darraymalloc.c:7:9:警告:内置函数“malloc”a[i]=malloc(sizeof(int)*5)的隐式声明不兼容; #包括 void main(){ int*a[3],i,j; 对于(i=0;i

我试图为一个3×5的二维数组分配内存。编译此代码时,我在cygwin终端中收到以下错误:

2darraymalloc.c:在函数“main”中:
2darraymalloc.c:7:9:警告:内置函数“malloc”a[i]=malloc(sizeof(int)*5)的隐式声明不兼容;
#包括
void main(){
int*a[3],i,j;
对于(i=0;i<3;i++){
a[i]=malloc(sizeof(int)*5);
}
对于(i=0;i<3;i++){
对于(j=0;j<5;j++){
a[i][j]=i+2*j;
}
}
printf(“%d”,*a[2]);
}

您需要包括
stdlib.h
,还必须始终检查
malloc()
是否返回了有效指针,如果出现错误,它将返回
NULL
,并且
main()
应返回
int
main()
的有效签名可能是
int main(void)

始终启用编译警告,将其添加到gcc调用中

gcc-Wall-Wextra-Werror-o我的程序名my source.c

在C中,默认情况下,假定没有定义原型的函数返回
int
。由于您没有包含stdlib.h,因此它未声明
malloc()
,因此假定返回
int
。语句
a[i]=malloc(…)
左侧有一个int指针,右侧有一个int-因此会显示错误消息。

谢谢,#include解决了我的问题problem@Michael我知道,这就是我告诉你添加它的原因。我只是想让你知道它只是stdlib.h,而不是主要功能。可以使用void main()而不返回anything@Michale不,不是。请通过做研究来尊重我所说的。使用
void main()
,而不是使用您正在使用的编译器是不正确的。请启用编译器警告,您将看到。如果您打算忽略警告,请不要编写c代码。简单。。不管怎样,我都感谢您的帮助(这也包含了您问题的解决方案)。