我正在为我所在的类编写内存分配替换API,并且下面有一个名为my_malloc()
的函数(已经从教授那里概述了一个基本框架),它返回了一些我不理解的东西
有人可以告诉我为什么_length
参数在开头有下划线,为什么return语句(size_t)
没有与_length分开?
Addr my_malloc(unsigned int _length) {
/* This preliminary implementation simply hands the call over the
the C standard library!
Of course this needs to be replaced by your implementation.
*/
return malloc((size_t)_length);
}
答案 0 :(得分:4)
无论是谁编写该函数,都认为调用名称_length
是个好主意。它没有任何特殊意义。
如果表达式中有(Typename)variablename
,则称为强制转换。在将_length
传递给size_t
函数之前,此代码会将malloc
转换为malloc
类型。
这实际上是多余的,因为在调用malloc
时会隐式发生相同的转换。 (除非我们在C89中并且#include <stdlib.h>
从未被声明,但是应该由let appDelegate = AppDelegate()
修复,而不是通过插入此强制转换来修改
答案 1 :(得分:0)
下划线只是变量名称的一部分。我可以定义变量x以及_x或x __。
关于第二个问题:这是从int到size_t的显式类型转换。
我建议您在C中阅读一些关于类型转换的内容,重要的是要理解。