|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.05.2010, 16:28 | #1 |
Пользователь
Регистрация: 22.04.2010
Сообщений: 17
|
Указатели
Имеется некоторая функция. Она выглядит вот так
Код:
Последний раз редактировалось @Manya@; 16.05.2010 в 16:59. |
16.05.2010, 19:49 | #2 |
Пользователь
Регистрация: 22.04.2010
Сообщений: 17
|
причем, если добавить в конце delete [] p2;, то удаляется все, что было в rem, но так быть не должно. Значит, p2 и rem в этот момент имеют одинаковые значения адреса. А вот как это исправить, не знаю
|
16.05.2010, 20:51 | #3 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Код:
Если я правильно понял суть, то вам надо куда-то копировать нужный вам фрагмент p1, а затем возвращать указатель на этот массив, в который вы скопировали.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
16.05.2010, 21:26 | #4 |
Пользователь
Регистрация: 22.04.2010
Сообщений: 17
|
Спасибо Вам большое.
Только что-то я не понимаю 1 вещь. Если завести еще 1 массив, то будет происходить тоже самое, что и было,а тут еще rem будет указывать на некоторую локальную переменную из функции( |
17.05.2010, 13:53 | #5 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Нет, rem будет указывать не на локальную переменную, а на область памяти. Поскольку эта область памяти выделена с помощью оператора new, то по выходе из функции она не будет освобождена и все данные, содержащиеся в ней, будут по-прежнему доступны по соответствующему указателю. Да, указатель rem является локальной переменной, и будет уничтожен по выходе из функции, но его значение (т.е. адрес области памяти) будет передано через return какому-то другому указателю, и теперь эта все еще валидная область памяти может быть доступна по этому новому указателю. Но, конечно же, в конце концов надо будет ее освободить, применив operator delete, передав ему в качестве аргумента текущий указатель.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Указатели С++ | MarihuanaP | Помощь студентам | 1 | 09.02.2010 17:06 |
указатели | Артэс | Общие вопросы C/C++ | 11 | 07.02.2010 16:47 |
Указатели | IceBreaker | Общие вопросы C/C++ | 9 | 05.02.2010 09:11 |
Указатели | Paul_AG | Общие вопросы C/C++ | 5 | 03.07.2009 14:22 |
[C] массивы, указатели, двойные указатели. | Iggel | Общие вопросы C/C++ | 5 | 05.05.2009 12:39 |