_length
и _data
являются семантически связанными элементами. Чтобы объект находился в согласованном состоянии, _length
всегда должен сообщать вам, сколько памяти находится в блоке, указанном _data
. Когда _data
указывает на 100 блоков, _length
должно быть 100. Когда _data
указывает на 1 блок, _length
должно быть 1. Если _data
не указывает ни на что (NULL), тогда _length
должно быть 0. В противном случае, если _data
равно NULL и _length
равно 100, значит, ваш объект находится в несогласованном состоянии. Когда я делаю:
for (int i = 0; i < _length; ++i)
{
// do something with _data[i], such as:
_data[i] = 0;
}
Я не должен падать. Если вам не удастся правильно установить _length
, произойдет сбой.
На самом деле вопрос в том, почему вы намеренно оставляете объект в несовместимом состоянии, что приведет к сбоям?