gpt4 book ai didi

c - 带有 calloc 的宏,安全吗?

转载 作者:太空宇宙 更新时间:2023-11-04 00:15:44 25 4
gpt4 key购买 nike

如果我在我的代码中使用这个宏是安全的吗?

#define my_calloc(x, n) ((x) = (__typeof__ (x))calloc((n), sizeof(__typeof__ (&(x)))))

我使用 gcc 作为编译器...

在我的程序中有很多内存分配点,所以我使用这个。我在 5 分钟前尝试过,我得到了一些奇怪的 sigabort 和 sigsev,现在我要回家了……如果我能找到一些东西,我会再试一次。

一些想法/提示?

编辑添加:

一般我使用宏如下:

double *x;
my_calloc(x, 10);

int **y;
my_calloc(y, 30);

最佳答案

我觉得应该是:

#define my_calloc(x, n) do { (x) = calloc((n), sizeof *(x)); } while (0)
  • 已删除不必要/危险的转换
  • 删除了多余的括号
  • do/while 添加以在 if (...)else 之间添加正确的行为
  • 字体大小固定
  • 删除冗余和不可移植的__typeof__

关于c - 带有 calloc 的宏,安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5557673/

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