Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Embarcadirov
0 / 0 / 1
Регистрация: 20.10.2017
Сообщений: 38
#1

Invalid pointer operation - C++ Builder

03.12.2017, 23:08. Просмотров 205. Ответов 4

Почему данная конструкция вызывает ошибку "invalid pointer operation"?
sizeV = panel.size() - 1, в векторе label аналогичное число элементов.
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm5::messageBoxCleare(){
 
    for(int i = 0; i < sizeV; i++){
        delete panel[i];
        delete label[i];
    }
 
    sizeV = -1;
    label.clear();
    panel.clear();
}
Оба вектора используются для динамического создания компонентов на форме.

Добавлено через 2 часа 1 минуту
Хмм... А вот такое работает так как надо. Разницы ведь быть не должно.
C++
1
2
3
4
5
6
7
8
    for(int i = 0; i < label.size();i++)
        delete label[i];
 
    for(int i = 0; i < panel.size(); i++)
        delete panel[i];
 
    label.clear();
    panel.clear();

http://www.cyberforum.ru/cpp-builder/thread156764.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2017, 23:08
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Invalid pointer operation (C++ Builder):

Invalid pointer operation
Здравствуйте. Пишу программу для заполнения таблицы идентификаторов и когда...

Invalid Pointer Operation
Приветствую всех неравнодушных к проблемам начинающих). Вопрос собственно по...

Компонент Label - ошибка Invalid pointer operation
Здравствуйте! Не подскажете, почему у меня косячат компоненты Label? Выдается...

Ошибка при выполнении (invalid pointer operation)
Надо рандомезировать массив, первый раз получается, но когда нажимаю на кнопку...

"Invalid pointer operation"
{ String s=Edit1-&gt;Text.c_str(), r=Edit1-&gt;Text.Length(); String...

4
keltor
34 / 34 / 24
Регистрация: 25.01.2017
Сообщений: 150
03.12.2017, 23:28 #2
sizeV Постоянное число, а panel.size() пересчитывается после каждого удаления.

Корректней, наверное, удалять так:

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
for(int i = sizeV; i >=0 ; i--)
   {
        delete panel[i];
        delete label[i];
    }


... но это не точно
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25611 / 17164 / 6825
Регистрация: 22.10.2011
Сообщений: 30,360
Записей в блоге: 6
03.12.2017, 23:37 #3
Цитата Сообщение от keltor Посмотреть сообщение
это не точно
, потому что начинать в случае прохода в обратном направлении нужно с sizeV - 1. Но тут нет необходимости в обратном проходе, ибо не Дельфи.
0
keltor
34 / 34 / 24
Регистрация: 25.01.2017
Сообщений: 150
03.12.2017, 23:49 #4
У него сразу там sizeV = panel.size() - 1
поэтому и ошибка может быть...

А почему нет необходимости в обратном проходе? Хотя в таком маленьком кусочке кода разбираться мне бесполезно.
0
Embarcadirov
0 / 0 / 1
Регистрация: 20.10.2017
Сообщений: 38
04.12.2017, 10:52  [ТС] #5
Цитата Сообщение от keltor Посмотреть сообщение
sizeV Постоянное число, а panel.size() пересчитывается после каждого удаления.
Это не так, я проверял. Удаляй элементы или не удаляй sizeV будет равно panel.size()-1.

Добавлено через 13 минут
Все я разобрался.
Созданные компоненты label помешались на компоненты panel то есть (label[sizeV]->Parent = panel[sizeV]
А я в первом случае сначала удалял panel[i] тем самым и удаляя помещенные на него компоненты.
0
04.12.2017, 10:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2017, 10:52
Привет! Вот еще темы с решениями:

Invalid floating point operation
определяю массивы, заполняю нулями: float B1, B2; for(int i=0;i&lt;200;i++)...

Invalid floating point operation
Как отладить такую ошибку? В функции достаточно много различных вычислений, на...

Invalid floating point operation в Builder 6.0
Здравствуйте. У меня проблема. Несколько месяцев назад делал программы для...

Invalid point operation с преобразованием даты
Использую в программе своей Zip Forge. Хочу задать Имя архива как показано в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru