Это не только плохое решение, это не решение .Вы не можете индексировать границы массива.Если вы это сделаете, у вас возникнет проблема неразрешимая , связанная с достижением правильной программы на C ++.
Что вы можете увидеть в распространенных реализациях C ++, так это то, что иногда count
помещается в стек сразу после buf
.Таким образом, если вы переиндексируете, а затем записываете, вы можете изменить count
, и тогда любое предположение о значении count
, основанное исключительно на прямых записях в него, больше не будет корректным, поскольку в него записываетсясверхиндексная операция.
Если вы теперь сделаете ее static
переменной, то она будет размещена в каком-то другом разделе программы (обычно .bss
для 0-инициализированных и .data
для иначе инициализированных данных), переменная countобщие реализации больше не будут размещаться рядом с массивом, и это приведет к другому инциденту: вместо перезаписи count
вы можете перезаписать все, что находится рядом с массивом.