将空指针赋予snprintf时的预期行为

gre*_*ech 3 c c++ printf pointers

此代码段的预期行为是什么?

char * aNullPointer = 0;
snprintf (res, 128, "Testing %s null pointer",aNullPointer);
Run Code Online (Sandbox Code Playgroud)

请注意,我故意试图让它取消引用我的空指针aNullPointer.

行为1)res指向字符串"Testing(null)null指针"

行为2)Seg Fault

根据我的平台,我似乎得到了不同的行为.某些snprintf实现执行完整性检查,而其他实现则不执行.

什么是最常见的行为?

cni*_*tar 7

这是未定义的行为 - 没有什么可期待的.一些实现检查NULL并用"nil"或"null"替换它的事实只是一个非常好的,你根本不能依赖它.