我在编写时遇到了 C malloc 函数的问题:
int *ptr = malloc( sizeof(int) );
或这个
int *x = (int*)malloc(sizeof(int*));
或这个
int *x = (int*)malloc(sizeof(int));
错误:“x”:“int *”与“int”的间接级别不同
我正在使用 Visual Studio 2013,Win32 控制台应用程序。
可能是什么问题呢?
这个
int *ptr = malloc( sizeof(int) );
和
int *x = (int*)malloc(sizeof(int));
本质上是一样的(你不需要演员表)
两者都在堆上分配足够的内存来存储一个 int,并返回一个指向它的指针。
然而,这是……?
int *x = (int*)malloc(sizeof(int*));
垃圾
问题是编写合理的代码。
这是在堆上为 int 分配内存的正确方法:
int *ptr = malloc( sizeof(int) );
所以你不应该有任何错误。如果您忘记包含 header <stdlib.h>
,您应该只收到警告。但我不熟悉视觉工作室。另外,请检查您没有拼错单词malloc
。