【发布时间】:2016-02-21 06:48:29
【问题描述】:
谁能解释一下两者的区别
int *x = malloc(sizeof(int));
&&
int *x = (int*)malloc(sizeof(int));
谢谢!
【问题讨论】:
-
malloc返回一个空指针。当您将其分配给int指针时,键入 cast 总是好的。它不会对代码产生任何影响,但您会避免一个警告。 -
@Swanand,如果您不输入 caste 并返回
malloc(),您将不会收到任何警告。 -
它的编译器依赖。例如,如果您在
C++编译器中编写C程序,那么您需要强制转换。 -
@Swanand
malloc的返回是void*,这意味着在C中不需要castmalloc,但如果你需要这样做可能是因为你正在使用a wrong Compiler或者wrong Language。现在,您能否解释一下为什么类型转换总是好的。?相信我,这样做在某些时候会有很大的不同。请解释一下。 -
@Haris & @ Milchi 是的……你们俩都是对的。我的编译器是错误的。我尝试使用 GCC,但没有任何警告。我正在使用基于 Eclipse 的编译器,其中包含许多安全插件(MISRA、Lint 等),这就是我收到警告的原因。
标签: c pointers memory malloc allocation