Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
3 / 3 / 1
Регистрация: 26.02.2011
Сообщений: 99

удаление указателя

01.04.2013, 12:50. Показов 5446. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
char* func() {
    char *str = new char[100];
    strcpy(str, "I am string!");
    return str;
}
.. далее
char *a;
a = func();
delete[] a;
или 
delete a;
как правильно?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.04.2013, 12:50
Ответы с готовыми решениями:

Удаление указателя
Доброго времени суток! Возник вопрос: безопасно ли таким способом удалять указатели? std::vector<MyClass*> vec; ...

Удаление указателя на матрицу
Здравтвуйте есть фу-я удаления матрицы void DeleteMatrix(double **obj) { for (int i = 0; i < n; i++) { delete...

Удаление указателя на объект класса
Что-то ни как не могу разобраться, где у меня ошибка?! Ниже приведен фрагмент кода: //... shapes *ptr=0; //ptr - указатель базового...

31
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
01.04.2013, 15:40
Студворк — интернет-сервис помощи студентам
Еще от ОС зависит.
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
01.04.2013, 15:52
Цитата Сообщение от Vourhey Посмотреть сообщение
Еще от ОС зависит.
Ага, не сказал, что дело было под Linux. Под виндой вроде есть ограничение что-то около 17ГБ на процесс.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
01.04.2013, 16:18
Цитата Сообщение от Kastaneda Посмотреть сообщение
Я сначала вообще офигел, как на машине с 16ГБ ОЗУ спокойно выделяется 1ТБ
Не очень понял. Т.е. 1ТБ своп создался на диске?
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
01.04.2013, 17:49
Цитата Сообщение от Tulosba Посмотреть сообщение
Не очень понял. Т.е. 1ТБ своп создался на диске?
Нет, на самом деле выделяется виртуальное адресное пространство, которое в 64 битных системах очень большое. Поэтому можно выделить хоть 1000 ТБ, оно успешно выделится (в Linux). Проблемы начнутся при записи в эту память, когда окажется, что выделенная память на самом деле физически не существует.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
01.04.2013, 18:52
Цитата Сообщение от Kastaneda Посмотреть сообщение
Проблемы начнутся при записи в эту память
А при чтении не начнутся? Вообще, конечно, хотелось бы знать, что память доступна для дальнейших действий (чтение,запись), а то что при "успешном" выделении ничего полезного сделать нельзя это только оттягивает ошибку.
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
01.04.2013, 20:09
Цитата Сообщение от Tulosba Посмотреть сообщение
А при чтении не начнутся?
Ну да, имелось ввиду при доступе к памяти.
Цитата Сообщение от Tulosba Посмотреть сообщение
а то что при "успешном" выделении ничего полезного сделать нельзя это только оттягивает ошибку
Да, так и есть. Ну обычно же память выделяется непосредственно перед использованием, поэтому ошибка обнаруживается практически сразу. Просто надо иметь ввиду, что такое поведение возможно.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.04.2013, 07:59
Цитата Сообщение от Kastaneda Посмотреть сообщение
Ну да, имелось ввиду при доступе к памяти.

Да, так и есть. Ну обычно же память выделяется непосредственно перед использованием, поэтому ошибка обнаруживается практически сразу. Просто надо иметь ввиду, что такое поведение возможно.
Можно пример, когда new отработал без ошибок, а доступ к "выделенной" памяти кинул ошибку?
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
02.04.2013, 09:12
Цитата Сообщение от Tulosba Посмотреть сообщение
Можно пример, когда new отработал без ошибок, а доступ к "выделенной" памяти кинул ошибку?
У меня под рукой 64 битной ОС нету, но например вот
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
int main()
{
   try {
      for (int i = 0; i < 10 * 1024; i++) {  // 10 Tb
         int *ptr = new int [1024 * 1024 * 1024];
      }
   } catch (...) {
      std::cout << "Exception" << std::endl;
   }
   
   return 0;
}
выдеяем 10 терабайт, все работает http://liveworkspace.org/code/3PGgLE$0

Чтоб упало, нужно попробовать что-нибудь писать в эту память, но LWS по таймауту отваливается, поэтому проверить не могу.
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.04.2013, 12:01
Цитата Сообщение от Kastaneda Посмотреть сообщение
выдеяем 10 терабайт, все работает
У меня в виртуалке на убунте грохнулось на первой же итерации. Видимо блока в 1Гб не удалось найти.
Если размеры поменять, т.е. увеличить кол-во циклов и уменьшить объём, выделяемый на итерации, оставив общий в 10Тб, то отработало.
При этом при записи потом действительно возникают ошибки. Прога вываливается с сообщением "Killed".
Если честно, хотелось бы найти описание такого поведения для выделения памяти в стандарте.
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
02.04.2013, 12:05
Tulosba, В каком стандарте? Память выделяет ОС и как она ее выделяет - это ее дело, а не дело С++.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.04.2013, 12:13
ForEveR, C++11 5.3.4 New. В частности там же говорится про, например, bad_alloc. Имхо, поведение, когда память выделена "успешно", а использовать её нельзя, мне кажется нелогичным.
0
02.04.2013, 12:29

Не по теме:

Вот из-за таких преподавателей и не надо идти на программиста, а идти на какой-нибудь физ-мат( Кто потянет ) и изучать программирование самостоятельно

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.04.2013, 12:29

Удаление и создание указателя в игре
Добрый вечер. Долгое время сижу с кодом, не придет в голову: Нужно, чтобы при пересечении на тайлмапе координат игрока/64 и символа 'b'...

Удаление указателя, в классе не содержащем объекта
Подскажите, в классе объявляю указатель на объект, сам объект создан в не этого класса, вопрос - нужно ли удалять указатель на этот объект...

Почему увеличение указателя на sizeof(тип) не тождественно инкременту этого же указателя?
Всем доброго дня.:) Можете обьяснить ,почему при инкриментировании указателя,его значение(адресс) увеличивается на 4 (размер int в...

Создание указателя на экземпляр класса, описанного после объявления указателя
Здравствуйте! Проблема в том, что нужно сделать так: class A{ public: B* b = nullptr; }; class B{ public:

Преобразование кода без указателя в код с использованием указателя
Правильно ли выполнил? Исходный код без указателя #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;fstream&gt; using...


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru