C/C++がダメなところでもっと重要な点はsingle writer xor multi readersのデータ競合安全性がないところだろ
例えばこれ

std::vector<int> v{0, 1, 2, 3, 4, 5, 6, 7};
int *p5 = &v[5];
assert(v[5] == 5); // OK

*p5 = 123;
assert(v[5] == 123); // OK

v.push_back(8);

*p5 = 456; // p5がまだ使えるので使おうとすると
assert(v[5] == 456); // NG このアサートは通らない