【发布时间】:2015-08-18 10:30:04
【问题描述】:
当然我知道我们不会转换malloc()的结果,但是mkl_malloc()呢?
这里是prototype:void* mkl_malloc (size_t alloc_size, int alignment);
与malloc()具有相同的返回类型,如您所见:void* malloc (size_t size);
因此,我不会为这些reasons 转换结果。但是英特尔的人会这样做,正如你看到的here,这让我担心我错过了什么。
有人知道吗?
【问题讨论】:
-
不,在 C 中你不需要转换 anything 返回
void *。所有指针都可以隐式转换为void *。 -
正是@JoachimPileborg,但我想知道英特尔人是否有其他意图!这就是我问的原因,我认为得到答案会很好,因为我搜索并没有找到任何东西。
-
如果您检查
mkl_malloc的原型,您会发现它有一些额外的参数,对吧?这意味着它更多不仅仅是分配一块内存。而void *就是void *,无论何时何地。 -
有很多代码都有多余的演员表,但我认为这不能证明什么。人们有习惯(例如,他们在使用另一种语言(如 C++)编程时养成的习惯)。有时这些习惯很糟糕,有时非常糟糕。 Cast 就是其中之一,除了非常具体的边缘用例之外,好的 C 代码根本没有强制转换。
-
d'accord @JensGustedt,这就是我的想法,C++ 确实以某种方式影响了这个例子,我认为你的评论与 Joachim 的结合可以作为答案。
标签: c memory-management casting malloc intel-mkl