gpt4 book ai didi

c - 在c中使用malloc()而不进行强制转换的内存

转载 作者:行者123 更新时间:2023-11-30 19:11:37 25 4
gpt4 key购买 nike

只是想知道,我已经使用 malloc 分配了内存没有 Actor 。例如

 char *ptr = malloc(26);

使用 GCC 编译成功,没有错误。使用此表达式分配内存安全吗?

另外,下面的表达式有什么区别吗?

char *ptr = malloc(26); 

char *ptr = (char*) malloc(26 * sizeof(char));

最佳答案

这很安全。通常会这样做,因为您只需更改 *ptr 的类型即可。而不是 Actor 阵容,因此更易于维护。

malloc给你一个void*它可以隐式转换为任何其他指针。

第二个问题中的语句(如果您使用 sizeof char 而不是 *char )应该没有区别,因为 char应始终是最小的内存单元。

sizeof char*顺便说一句,不是 sizeof charsizeof char*为您提供指针的大小,根据您的体系结构,该大小可能是 4 或 8。

最好的方法是 char *ptr = malloc(26 * sizeof *ptr);同样,这更易于维护,因为您只需更改 *ptr 的数据类型即可。 .

关于c - 在c中使用malloc()而不进行强制转换的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39528696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com