小编Agu*_*cía的帖子

为什么要返回静态指针而不是out参数?

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还是仅仅为了提高效率?

c time.h

17
推荐指数
4
解决办法
1732
查看次数

索引数组时是否应该始终使用size_t?

size_t即使数组的大小不足以超过int的大小,我在索引数组时也需要始终使用它吗?

这不是我何时应该使用的问题size_t。我只想知道,例如,一个程序是否具有2GB的可用内存(所有这些字段都可以由int32索引),但是此内存(虚拟内存)已分配给“字段” 14GB-计算机的16GB内存。

在这种情况下,如果我使用int32而不是size_t(或unsigned long int)来索引内存,它将总是失败吗?

也许问题更多是关于虚拟内存,而不是指针。

c c++ pointers size-t virtual-memory

13
推荐指数
1
解决办法
643
查看次数

mmap 中的长度是字节数还是页数?

在函数中:

void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset)
Run Code Online (Sandbox Code Playgroud)

中的参数lengthmmap表示字节数还是页数?另外,我可以mmap类似地使用malloc吗?有什么区别?

c c++ linux mmap

1
推荐指数
1
解决办法
320
查看次数

标签 统计

c ×3

c++ ×2

linux ×1

mmap ×1

pointers ×1

size-t ×1

time.h ×1

virtual-memory ×1