Skip to content

败犬日报 2025-09-08

1. 怎么搞出 sizeof 是 0 的类型

C++ 不存在这个东西。标准不允许两个对象地址相同,如果 sizeof(T) 是 0,定义数组 T a[2]; 就会有 a[0] a[1] 的地址相同,违背了要求。

cpp
#include <iostream>

struct A {
    int a[0];  // warning: ISO C++ forbids zero-size array ‘a’
};

int main() {
    std::cout << sizeof(A) << std::endl;
}

这个用 GCC 编译确实输出 0,但是这是编译器扩展(柔性数组)。而且 MSVC 输出是 4。

2. 写C++有UB PTSD怎么办?(文章)

https://www.zhihu.com/question/656856350/answer/3514953419