Я новичок в C++, пытаясь следовать учебной серии, чтобы изучить язык, задача, выделенная для выделения памяти, - выделить память на 26 символов, а затем заполнить их алфавитом, abcde ... и т.д.Выделение памяти указателями
Я думал, что я знал, что решение, но столкнулся с этой ошибкой: Invalid address specified to RtlValidateHeap(00490000, 0049D9EC)
та часть, которая бросает меня есть программа выполняется полностью, аз, но по-прежнему бросает эту ошибку
Вот мой код:
char c = 'a';
char *pChar = new char[26];
for (int i = 0; i < 26; i++, pChar++, c++) {
*pChar = c;
cout << *pChar << flush;
}
delete[] pChar;
Извините если вопрос сформулирован плохо, я новичок как в C++, так и в stackoverflow.
Почему вы не просто объявить 'обугленного strAlphabet [27];» переменная, и в вашем цикле 'for' обратный доступ к индексу с помощью' strAlphabet [i] = c; '? Затем установите последний (индекс 26, позиция 27 - '\ 0'). Таким образом, вы не беспокоитесь о указателях и распределении/освобождении памяти. Затем просто загрузите 'strAlphabet' один раз до cout после цикла? Или вы работаете над упражнением об использовании указателей? –
@AndrewTruckle не проблема на этот раз, '* pChar' печатает только один символ, но важно отметить, что нужно знать. 'cout << pChar;' (обратите внимание на отсутствующий символ '*'), который переходит в неопределенное поведение. Что, вероятно, произойдет, так это то, что программа будет печатать до тех пор, пока не найдет нулевой символ или программа не выйдет из строя, но для компьютера будет так же хорошо расти, как и танец сальсы вокруг вашей комнаты. – user4581301
@ user4581301 Да, я понял, что он сделал один символ. Наверное, я просто не буду писать задачу так, как она была представлена. –