当我写:
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) );
所以你不应该有任何错误。如果您忘记包含标头<stdlib.h>
,则应该只有警告。但我不熟悉Visual Studio。另外,请检查您是否没有拼错单词malloc
。