gpt4 book ai didi

c - malloc 的正确论据

转载 作者:行者123 更新时间:2023-12-02 06:01:07 24 4
gpt4 key购买 nike

我一直使用 malloc 函数,例如,

int size = 10000;
int *a;
a = malloc(size * sizeof(int));

我最近遇到了一段丢弃了 sizeof(int) 部分的代码,即

int size = 10000;
int *a;
a = malloc(size);

这第二个代码似乎工作正常。

那么我的问题是,哪种形式是正确的?如果是第二种形式,我是否为第一种形式分配了不必要的空间。

最佳答案

malloc 的参数是要分配的字节数。如果您需要为类型为 Tn 元素的数组提供空间,请调用 malloc(n * sizeof(T))malloc 不知道类型,它只关心字节。

唯一的异常(exception)是,当您为 (byte/char) 字符串分配空间时,sizeof 可以省略,因为 sizeof(char) == 1 根据 C 中的定义。做类似的事情

int *a = malloc(10000);
a[9000] = 0;

现在可能看起来有效,但实际上利用了未定义的行为。

关于c - malloc 的正确论据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23770175/

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