gcc: "implementation-defined" malloc(0) 是如何定义的?

gcc: how is "implementation-defined" malloc(0) defined?

C 标准(例如 C99)表明 malloc(0) returns "a null pointer or a unique pointer that can be successfully passed to free()"。两者中的哪一个是 实现定义的 。 (这已在 Whosebug 上被多次询问,例如 1, 2, 3, 4。)

我的问题是:GCC是怎么定义的?

GCC 根本没有定义它。 GCC 使用标准库提供的 malloc() 实现。在 OS X 上,这将是 libSystem,在 Linux 上,这通常是 glibc 或 eglibc 等。这些库是开源的,因此您可以浏览源代码。