空のstd::vectorのdataの値
空のstd::vectorに対してdata()を呼び出した時、任意の値を返しても良いことになっている。
つまり
- nullptr かもしれない
- 有効なアドレスを指したポインタかもしれない
なぜかというと [data(),data() + size()) が有効な範囲を表すと定義されており、size()が0の場合はdata()の値が何であれこれを満たすから。
参考: c++ - What should std::vector::data() return if the vector is empty? - Stack Overflow
data()を使うときは、その前にempty()かどうかチェックしたほうがいい場合が多いだろう。
if (!v.empty())
do_something(v.data());