| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Проблема с указателями |
| Автор: Malloc 16.8.2005, 19:59 | ||||
При вызове этой функции
программа останавливаенся на
этой строчке и пишет "Access violation...". (Какой-то глюк из-за указателя). Эта функция вот что делает: есть указатель outstr типа char. Он указывает на какую-то строку. Эта функция добавляет к этой строке строку str длины n. pSize - длина outstr. Вопрос: почему при освобождении памяти указателем outstr программа выдает сообщение "Access violation..."? И как это устранить (Если надо, я поясню подробнее) |
| Автор: bel_nikita 16.8.2005, 20:04 |
| А где этот самый outstr и pSize? Это глобальные переменные? |
| Автор: Malloc 16.8.2005, 20:10 |
| Это члены класса TMainForm. Кстати, у меня еще в некоторых местах возникала такая проблема, не только в этой функции. (когда я вызываю delete) |
| Автор: Mayk 16.8.2005, 20:41 |
| А как инициализируется outstr? |
| Автор: JackYF 17.8.2005, 02:46 | ||
| А может, надо
Попробовать без скобок? |
| Автор: bilbobagginz 17.8.2005, 02:59 |
| как то очень странно написанно... вопросы: 1. почему нет проверки на n, str ? ( если тебе дать n < -SizeB, то ты попросишь у "new" аллоцировать отрицательное кол-во букв) 2. почему нет тестирования благополучности завершения "new " ? 2.1 какой смысл писать "new char(m*sizeof(char))" ? (почему не просто new char(m); )? 3. как определена outstr в классе "TMainForm" ? ( не "const" ли ? ) |
| Автор: Malloc 17.8.2005, 19:51 |
| Сегодня исправил эту проблему. Короче, нужно было к строке добавлять другие строки неизвестных длин. Я хотел следать это динамически, т.е. зная длину данной строки и добавляемой, сделать из них новую, делать указатель первой строки на эту новую, а старую удалять. Потом, намучавшись, я решил для первой строки выделить память (с небольшим запасом, есть верхний предел). Все, тема может быть закрыта. |