22得票1回答
malloc和calloc为什么最终有不同的参数形式?

可能是重复问题: 为什么calloc需要两个参数,而malloc只需要一个参数? 有很多资源描述了malloc和calloc之间功能差异的区别,但我找不到一个能够描述这些函数签名差异背后历史的资源: void *calloc(size_t nmemb, size_t size); ...

21得票2回答
关闭文件指针而不关闭底层文件描述符

通过使用fdopen()和fileno(),可以使用现有的文件描述符打开流。但是,一旦使用流打开文件,正确关闭文件的方法是关闭FILE指针,即fclose()。那么如何关闭流但保留打开的文件描述符呢? 这种行为类似于调用fflush()和fileno(),然后在关闭时不再使用FILE指针。另...

21得票3回答
gcc:降低所需的libc版本

我试图在一些较旧的32位RedHat发行版上运行一个新编译的二进制文件。 这个二进制文件是使用C编译的(不是C++),在运行libc v2.12的CentOS 32位虚拟机上编译而成。 RedHat抱怨libc版本过低:error while loading shared libraries:...

20得票3回答
什么导致sprof抱怨“ld.so检测到不一致性”?

我正在尝试使用sprof来对一些软件(ossim)进行性能分析,其中几乎所有的代码都位于共享库中。 我已经生成了一个性能分析文件,但是当我运行sprof时,我遇到了以下错误:> sprof /home/eca7215/usr/lib/libossim.so.1 libossim.so.1...

20得票3回答
由于标准C委员会没有为gets()标准化一个简单的替代方法,应该使用什么替代方法?

gets函数在C99中被首次弃用,并在C11最终被移除。但是,在C库中没有直接替代它的函数。 fgets()不是一种完全替代的方法,因为它不会删除最后的'\n',而这个字符可能不存在于文件末尾。许多程序员也会犯错。 有一个简单的一行代码可以删除换行符:buf[strcspn(buf,"\n...

20得票2回答
为什么time(time_t *)函数既返回又设置传引用参数?

我一直很好奇,为什么time(time_t *)函数既返回time_t又将时间设置为传入的指针? 返回时间的示例:time_t myTime = time(NULL); printf("The time is now %s", ctime(&myTime)); 设置指针值的示例:ti...

19得票2回答
为什么通报“abort”会违法?

GNU libc文档中的abort函数包含以下通知: 未来更改警告:拟议中的联邦审查规定可能禁止我们向您提供有关调用此函数的可能性的信息。我们将被要求说这不是一个终止程序的可接受方式。 啥? 我找到了一个七年前的Reddit讨论帖子,讨论的就是这个问题。看起来这个通知是由Rich...

19得票1回答
SIG_DFL具体是做什么的?

SIG_DFL(信号的默认处理程序)具体做什么?我对调试SIGTSTP感兴趣。在奇怪的条件下,它会有轻微的异常行为。我怀疑如果其中一个线程处于TASK_INTERRUPTIBLE状态,则会执行一些奇怪的操作。 SIG_DFL源代码在哪里?Libc中吗? 谢谢。

19得票1回答
为什么nm libc.so报告没有符号?

我已经做了一个像这样简单的程序: g++ application.cpp -o application.exe 然后执行了这个命令;ldd application.exe ... libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 ... 我想...

18得票12回答
在C语言中获取时区GMT偏移量

我正在使用标准的mktime函数将struct tm转换为时期时间值。 tm字段本地填充,我需要将时期时间作为格林威治标准时间获得。 tm有一个gmtoff字段,可以让您设置本地GMT偏移量(以秒为单位)以实现此目的。 但是我无法找到如何获取此信息。一定有标准函数可以返回偏移量吧?local...