62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
|
|||||||||||
1 | |||||||||||
delete указателя28.08.2010, 13:55. Показов 1456. Ответов 12
Метки нет (Все метки)
valueOfWordS - указатель, член класса String_value, конструктору же этого класса передается указатель на переменную того же типа:
0
|
28.08.2010, 13:55 | |
Ответы с готовыми решениями:
12
Вызов delete для нулевого указателя Удалит ли delete[] после измения типа указателя Используя delete по указателю, возвращенному new [] или delete [] указателем, возвращаемым new Почему увеличение указателя на sizeof(тип) не тождественно инкременту этого же указателя? |
Заблокирован
|
|
28.08.2010, 13:59 | 2 |
Тебе не кажется, что передавать int через указатель немного странно?
Не по теме: Я так полагаю, что передаётся именно указатель на одно число, а не на массив, ибо в том случае глупо бы было делать delete вместо delete[].
0
|
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
|
|
28.08.2010, 14:05 [ТС] | 4 |
там странного ничего нет, объект создается внутри другого объекта, а именно при нажатии кнопки "Run"(это гуи приложение), а указатель нужен для того чтобы при некоторых условиях узменить значение переменной из первого класса(который вызывает констуктор String_value - класса)
0
|
Заблокирован
|
|
28.08.2010, 14:07 | 5 |
0
|
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
|
|
28.08.2010, 14:10 [ТС] | 6 |
так дело и в том *valueOfWordS значением можно свободно пользоваться в классе после конструктора
Добавлено через 2 минуты Может и так, но это осознанная жертва, хотя если посидеть это можно исправить но дело в другом, дело в сути вопроса
0
|
Заблокирован
|
|
28.08.2010, 14:14 | 7 |
Да нет, как раз таки в этом дело. Ты сначала открываешь доступ к переменным класса неизвестно кому, потом этот неизвестно кто (в данном случае объект класса String_value) удаляет переменную, на которую указывает value_pointer, хотя по логике владеть временем её жизни должен класс, которому она пренадлежит.... А потом удивляешься: чего это оно криво работает? Да потому что архитектура отвратная. Сейчас ты пофиксишь тут, а отвалится в другом месте.
0
|
28.08.2010, 14:17 | 8 | |||||
Смотрите, как я понял у Вас примерно такой случай:
Код
fasked@linux-5kgr:~/Documents> g++ test.cpp fasked@linux-5kgr:~/Documents> ./a.out P1: 5 P2: 5 P1: 0 P2: 0 fasked@linux-5kgr:~/Documents>
0
|
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
|
||||||
28.08.2010, 14:39 [ТС] | 9 | |||||
Открыл доступ только в одном месте, а именно указателю, дело как раз в том что она криво не работает хотя должна
Добавлено через 20 минут даже так работает
0
|
28.08.2010, 14:56 | 10 |
Вы читать умеете?
Я же сказал, что в памяти может остаться некоторое значение, оно не обязательно будет затерто. При переносе кода на другую платформу все может измениться и тогда Ваш код рухнет при первой подобной операции. Хорошей привычкой считается после операций освобождения памяти обнулять указатели
0
|
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
|
|
28.08.2010, 15:02 [ТС] | 11 |
все теперь понятно, после обнуления указателя программа рухнула, будем теперь знать что платформа тоже вносит свои коррективы, теперь буду постоянно их обнулять, наверно даже ф-цию напишу для автоматизма или delete перегружу
Спасибо
0
|
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
|
|
28.08.2010, 15:13 [ТС] | 13 |
не тут конечно уже не буду так извращаться , тут обойдемся простым обнулением эт когда много надо будет чего удалить, хотя я встречал как некоторые делают свои ф-ции для освобождения и помещают их в заголовочный файл, а потом где надо просто подключают его
0
|
28.08.2010, 15:13 | |
28.08.2010, 15:13 | |
Помогаю со студенческими работами здесь
13
Создание указателя на экземпляр класса, описанного после объявления указателя Преобразование кода без указателя в код с использованием указателя Как сделать функцию от указателя на класс и указателя на метод? В чем разница между delete и delete[]? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |