【问题标题】:Is it necessary to typecast malloc() when allocating memory? [duplicate]分配内存时是否需要对 malloc() 进行类型转换? [复制]
【发布时间】:2021-11-27 04:55:12
【问题描述】:

我在看一些关于指针的讲座,在演示代码中,老师在buffer = (char*)malloc(sizeof(char) * 128);行中对malloc的结果进行了类型转换:


#include <stdio.h>

#include <stdlib.h>

int main()

{
    
char *buffer;
    
    buffer = (char*)malloc(sizeof(char) * 128);
    if (buffer == NULL)
    {
        puts("Unable to allocate memory");
        exit(1);
    }
    puts("Buffer allocated");
    free(buffer);
    puts("Buffer freed");
    
    return 0;
}

我的问题是为什么。这是必要的吗?如果我已经将要分配的内存块声明为sizeof()char,这似乎是多余的。

【问题讨论】:

  • 不需要演员表。你buffer = malloc(sizeof *buffer * 128);

标签: c pointers memory malloc


【解决方案1】:

malloc 返回一个 void 指针,在 C 中可以将其分配给任何其他指针类型而无需强制转换。我的教授过去讨厌铸造它,如果我们这样做了,那么他会扣分。不需要额外的明确性。

【讨论】:

    猜你喜欢
    • 2012-10-28
    • 2017-07-06
    • 2011-09-15
    • 2020-11-05
    • 2021-03-19
    • 2019-04-09
    • 2020-02-28
    相关资源
    最近更新 更多