Я пытаюсь изменить размер динамически распределенного массива строк; вот код!Изменение размера массива динамических строк
void resize_array() {
size_t newSize = hash_array_length + 100;
string* newArr = new string[newSize];
fill_n(hash_array,newSize,"0"); //fills arrays with zeros
memcpy(newArr, hash_array, hash_array_length * sizeof(string));
hash_array_length = newSize;
delete [] hash_array;
hash_array = newArr;
}
К сожалению, он не работает и дает ошибку сегментации. любая идея почему? это в основном линейная хеш-таблица, где элемент вставлен везде, где есть 0, поэтому я использую fill_n для заполнения вновь созданного массива с помощью 0. любая помощь, пожалуйста?
Не могли бы вы рассказать нам, какой язык вы используете здесь и в какой строке возникает ошибка сегментации? Благодарю. – Simon
Язык, который я использую, - это C++, и я не могу определить строку, на которой возникает ошибка сегментации. Я использую dev-C++ в качестве компилятора, и я думаю, что что-то не так с отладчиком. –
Не было бы проще проверить неиспользуемые записи, используя ['std :: string :: empty()'] (http://en.cppreference.com/w/cpp/string/basic_string/empty) вместо заполнения и тестирование магического значения '' 0 "'? – Blastfurnace