开发者社区> 问答> 正文

在c語言中用malloc分配內存的問題

int pi = (int)malloc(sizeof(int));

int *pi = malloc(sizeof(int));
用這兩個語句分配內存,又什麼區別嗎?

展开
收起
a123456678 2016-06-08 21:03:58 1682 0
1 条回答
写回答
取消 提交回答
  • malloc的原型返回值是void,所以int pi = malloc(sizeof(int)); 在某些编译要求比较严格的编译器中,会报错,因为左值是int,而右值是void,类型不一致。所以推荐方法1.
    纠正下,在C语言里这么用的确是没问题的,因为c语言对类型的检查不是那么严格,但在强类型语言比如C++里,这样的用法是编译报错的。对于下面同样的代码,用gcc编译会通过,但是g++会错误,考虑到目前很多代码都是C++/C混编的,所以从我个人的角度我建议方式1)

    见图:
    screenshot

    2019-07-17 19:32:45
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
内存取证与IaaS云平台恶意行 为的安全监控 立即下载
云服务器ECS内存增强型实例re6全新发布 立即下载
低代码开发师(初级)实战教程 立即下载