У меня возникли серьезные проблемы с моим кодом. Я не понимаю, почему это происходит, и я понятия не имею, как это исправить.Выделение динамической памяти?
В основном я попытался определить массив указателей на символы, где каждый элемент массива указателей хранит другой набор символов.
конструктор класса: (примечание: размер представляет собой целое число, которое определяет, как велико должно быть мой массив указателей, пользователь может определить это)
storeElements = new char*[size];
Say размер = 3, теперь storeElements должен быть массивом указателей, способных указывать на 3 отдельные строки символов.
*storeElements = "one";
*(storeElements+1) = "two";
*(storeElements+2) = "three";
Когда я печатаю эти значения сразу после присвоения им, они печатают правильные строки, однако позже в своем коде, в других функциях и после многих других переменных были объявлены, и я открыл текстовый файл вывода , * storeElements вид путается.
Скажем, например, если бы я попытался это сделать (в дальнейшем в моем коде):
cout << *(storeElements+2) << endl;
Вместо печати «три» он может печатать «один» или вообще ничего.
Там надо быть проблема с динамическим распределением памяти здесь, потому что я читаю из текстовых файлов, а иногда содержимое этого текстового файла сохраняется в элементах * storeElements без меня назначая их * storeElements на всех
Пожалуйста, помогите мне лучше понять, как это исправить. Я вложил много времени и сил в свой код и очень расстроился из-за этого. Спасибо, что нашли время, чтобы помочь мне.
Если вы находитесь на Linux, valgrind может помочь. Во всяком случае, сваривание вашего кода до минимума, который воспроизводит проблему, дает людям здесь больше шансов помочь. –
Предполагается, что вы читаете из файла, не выделяя достаточно места для хранения каждой строки. Вы пытались использовать 'std :: vector>'? –
Извлеките [MCVE] (http://stackoverflow.com/help/mcve) из своего кода и опубликуйте его. Это безответственно без фактического кода. – Angew