相关疑难解决方法(0)

我是否施放了malloc的结果?

这个问题,有人建议意见,我应该不会投的结果malloc,即

int *sieve = malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)

而不是:

int *sieve = (int *) malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)

为什么会这样呢?

c malloc casting

2318
推荐指数
27
解决办法
22万
查看次数

对malloc返回的指针进行类型转换是一种更好的做法吗?

对于下面的C代码,比较int指针a和b的定义;

#include <stdio.h>
#include <stdlib.h>

int main()
{
  int *a=malloc(sizeof(int));
  int *b=(int *)malloc(sizeof(int));
  return(0);
}
Run Code Online (Sandbox Code Playgroud)

以任何方式更好地类推由malloc函数返回的void类型的指针?或者在分配到左侧的int指针时是自动类型化的吗?在哪种情况下,如果有的话,它是否可以证明是必要的而不仅仅是强制性的?

请说明隐式类型转换,右侧类型转换为左侧类型,是否适用于此处.

c malloc pointers

4
推荐指数
4
解决办法
1631
查看次数

需要对C中的铸造做一些澄清

我刚刚读到了关于铸造返回值的不良做法malloc.如果我理解正确的话,离开演员是绝对合法的,因为它是隐含的(并且应该留下,因为它可能产生其他问题).那么我的问题是,我什么时候应该施展我的价值观呢?有一些一般规则或什么?例如,此代码编译时没有任何错误gcc -W -Wall(除了未使用bar,但这不是重点):

float foo(void) {
    double bar = 4.2;
    return bar;
}

int main(void) {
    double bar = foo();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我现在很困惑.有关铸造的良好做法和规则是什么?

谢谢.

c casting

2
推荐指数
3
解决办法
1358
查看次数

标签 统计

c ×3

casting ×2

malloc ×2

pointers ×1