char *strerror_r(int errnum, char *buf, size_t buflen);
这些buf
/buflen
参数是做什么用的?
空缓冲区就像一个魅力:
char* buf = nullptr;
fprintf(stderr, strerror_r(errno, buf, 0));
此外,这个缓冲区看起来像未使用:
char buf[1024];
fprintf(stderr, "%s\n", strerror_r(errno, buf, sizeof buf)); // Correct message here
fprintf(stderr, "%s\n", buf); // Empty