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

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

01.04.2013, 12:50. Показов 5249. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SUNO Ai - Река Без Дна
zorxor 31.07.2026
Автор стихотворения - астрофизик Марина Катыс Ссылка на сгенерированную музыкальную композицию: https:/ / suno. com/ song/ 6f6e5464-b290-4650-be6c-44c85f8d8013 Я говорю, что Время- как вода течет. . .
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru