char* asctime (const struct tm * timeptr);
char* ctime (const time_t * timer);
Run Code Online (Sandbox Code Playgroud)
我发现在time.h指向静态变量的返回指针中有许多函数,可以通过对这些函数的任何后续调用来更改它们。这意味着我必须复制刚得到的数据,这是我必须执行的额外操作,这会使那些函数成为线程不安全的。
为什么以这种方式实施?这些签名会更好吗?
void asctime (char * out, const struct tm * timeptr);
void ctime (char * out, const time_t * timer);
Run Code Online (Sandbox Code Playgroud)
在开发过程中,我们始终必须做出决定。我只是在问为什么他们选择返回静态指针而不是将“输出变量”作为参数。
顺便提一句(这是另一个问题),为什么他们不将结果分配到堆上?是允许使用任何东西代替malloc还是仅仅为了提高效率?
size_t即使数组的大小不足以超过int的大小,我在索引数组时也需要始终使用它吗?
这不是我何时应该使用的问题size_t。我只想知道,例如,一个程序是否具有2GB的可用内存(所有这些字段都可以由int32索引),但是此内存(虚拟内存)已分配给“字段” 14GB-计算机的16GB内存。
在这种情况下,如果我使用int32而不是size_t(或unsigned long int)来索引内存,它将总是失败吗?
也许问题更多是关于虚拟内存,而不是指针。
在函数中:
void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset)
Run Code Online (Sandbox Code Playgroud)
中的参数length是mmap表示字节数还是页数?另外,我可以mmap类似地使用malloc吗?有什么区别?