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

Поведение оператора new платфоромозависимое?

19.09.2014, 11:04. Показов 3753. Ответов 59
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В случае неудачи оператора new, допустим out of memory, он может кинуть исключение или вернуть ноль:
MSDN:
If unsuccessful, new returns zero or throws an exception
Подскажите, а это поведение так сказать платформ депендет или на всех платформах по дефолту он ведёт себя одинаково. Это же поведение можно поменять ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.09.2014, 11:04
Ответы с готовыми решениями:

Не понятное поведение тернарного оператора
#include "stdafx.h" #include <initializer_list> #include <iostream> #include <algorithm> int mas =...

Неправильное поведение программы с использованием логического оператора или
while((ch=_getche())!='.') a=a*10+ch-'0'; ch='0'; while((ch=_getche())!='.') b= b*10+(ch-48); ch='0'; ...

Поясните поведение оператора ==
Почему == возвращает false а Equals true ? Для object a = 2; object b = 2; Я знаю что Equals на значимых типах проверяет равенство...

59
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
19.09.2014, 13:22
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Scrooge McDuck Посмотреть сообщение
Ну где NULL, вызовется foo(int)
а с long: http://ideone.com/mH8FTd
с nullptr ошибки нет: http://ideone.com/IrC3U6
ну а тут вообще вызовется версия для nullptr_t: http://ideone.com/bNtpG2
2
Заблокирован
19.09.2014, 13:39  [ТС]
Ну на счёт предпочтения понял, но всё же, практический выхлоп то от него какой? Как он может быть использован с какой - то целью то? Тем пампаче ноль обычно является возвращаемым значением, а не принимаемым в качестве аргумента функции.
Вот есть у меня функция
C++
1
2
3
4
5
void Kill(Object* obj)
{
if(obj != nullptr)
    delete obj;
}
и что получается, мне этот nullptr_t позволяет написать ещё дополнительную функцию проверки что ли типа:

C++
1
2
3
4
5
6
7
8
void Kill(Object* obj)
{
//ну тут он точно не ноль
}
void Kill(std::nullptr_t)
{
//а если указатель на объект - нулевой указатель, то попадёшь сюда, так что ли ?
}
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
19.09.2014, 13:42
Цитата Сообщение от Scrooge McDuck Посмотреть сообщение
Подскажите, а это поведение так сказать платформ депендет или на всех платформах по дефолту он ведёт себя одинаково. Это же поведение можно поменять ?
Зачем?
В большинстве случаев, если нельзя выделить память(ее не хватает на компе в данный момент) то это уже не поправимо, смысл рыпаться?
1
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
19.09.2014, 13:49
Цитата Сообщение от Croessmah Посмотреть сообщение
почему все в тестовых целях называют функции "ФУУ"
Хоть знать буду, тоже всё никак понять не мог, фуу какая-то
0
Заблокирован
19.09.2014, 13:55  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
В большинстве случаев, если нельзя выделить память(ее не хватает на компе в данный момент) то это уже не поправимо, смысл рыпаться?
Сообщить юзеру, что мол памяти нема И предложить ему закрыть парочку программ или самом в наглую убить что - то
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
19.09.2014, 13:58
Лучший ответ Сообщение было отмечено Scrooge McDuck как решение

Решение

Сообщить юзеру, что мол памяти нема И предложить ему закрыть парочку программ или самом в наглую убить что - то
Разве что только это, но все равно смысла в этом мало. Сомневаюсь что закрытие других процессов поможет сильно.
1
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
19.09.2014, 14:00
Цитата Сообщение от Avazart Посмотреть сообщение
Сомневаюсь что закрытие других процессов поможет сильно.
может есть возможность освободить память? Например, сохранить часть малоиспользуемых данных на диск.
1
Заблокирован
19.09.2014, 14:09  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
омневаюсь что закрытие других процессов поможет сильно.
Всё, меня задолбала эта ерунда В самом деле, нет памяти - пусть софт падает, никогда ничё проверять даже не буду. Точка Всём спасибо. Осталось обсудить свопинг памяти в hiberfil.sys в Windows для очистки памяти
0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2226 / 1428 / 420
Регистрация: 16.05.2013
Сообщений: 3,651
Записей в блоге: 6
19.09.2014, 14:21
Лучший ответ Сообщение было отмечено Scrooge McDuck как решение

Решение

Цитата Сообщение от Scrooge McDuck Посмотреть сообщение
Всё, меня задолбала эта ерунда В самом деле, нет памяти - пусть софт падает, никогда ничё проверять даже не буду.
Допустим пользователь хочет открыть большой файл и вместо сообщения о нехватке памяти его софт рухнет. Замечательно дизайнерское решение.
0
Заблокирован
19.09.2014, 14:35  [ТС]
Цитата Сообщение от Ilot Посмотреть сообщение
Замечательно дизайнерское решение.
А ну да кстати... Тогда new (std::nothrow) и проверять на NULL, nullptr_t как обычно совсем не нужен ...
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
19.09.2014, 14:39
Цитата Сообщение от Ilot Посмотреть сообщение
Допустим пользователь хочет открыть большой файл и вместо сообщения о нехватке памяти его софт рухнет. Замечательно дизайнерское решение.
Вполне нормально, для этого есть требования к системе, или компьютерные игры не падают?

Добавлено через 4 минуты
Цитата Сообщение от Scrooge McDuck Посмотреть сообщение
Всё, меня задолбала эта ерунда В самом деле, нет памяти - пусть софт падает, никогда ничё проверять даже не буду. Точка Всём спасибо. Осталось обсудить свопинг памяти в hiberfil.sys в Windows для очистки памяти
Ну все проверять задолбаешся, и думаю нехватка памяти это именно та вещь которую в большинстве случаев можно не проверять.
0
Заблокирован
19.09.2014, 14:59  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Ну все проверять задолбаешся, и думаю нехватка памяти это именно та вещь которую в большинстве случаев можно не проверять.
Всё, это то, что я и хотел услышать! Ничего не буду проверять!
P.S.: если что, сказу заказчику софта, что мне так посоветовал Avazart с киберфорума
0
19.09.2014, 15:09

Не по теме:

Цитата Сообщение от Scrooge McDuck Посмотреть сообщение
Всё, это то, что я и хотел услышать! Ничего не буду проверять!
P.S.: если что, сказу заказчику софта, что мне так посоветовал Avazart с киберфорума
О да! Это если заказчик софта - студент, готовый заплатить за софт аж сто! рублей.
А в серьезной конторе тебе на первый раз дадут по рукам, а на второй - вежливо предложат зайти в отдел кадров за документами.

0
19.09.2014, 15:21  [ТС]

Не по теме:

Цитата Сообщение от CheshireCat Посмотреть сообщение
А в серьезной конторе тебе на первый раз дадут по рукам, а на второй - вежливо предложат зайти в отдел кадров за документами.
С чего вдруг? Максимум будут некоторые "трения" со смежной конторой тестировщиков :victory:

0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
19.09.2014, 15:28
А за то что код награмажден проверками при каждом
C++
1
сhar ch* = new char[32];
не будут давать по рукам?
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
19.09.2014, 15:32
Зачем что то проверять, когда по умолчанию выбрасывается исключение bad_alloc? Ловить исключение можно в одном месте.
0
Заблокирован
19.09.2014, 15:35  [ТС]
Цитата Сообщение от Toshkarik Посмотреть сообщение
Ловить исключение можно в одном месте.
Да, если изначально функцию WinMain от открывающей скобки до закрывающей обернёшь в try catch

Добавлено через 27 секунд
Цитата Сообщение от Avazart Посмотреть сообщение
не будут давать по рукам?
присоединяюсь к вопросу
0
19.09.2014, 15:36

Не по теме:

лучше перебдеть, чем недобдеть.. (с)

0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
19.09.2014, 15:37
И что в этом плохого? Для этого есть специальная конструкция:


C++
1
2
3
4
5
6
7
8
9
int foo()
try
{
   //some stuff here
}
catch( ... )
{
   ///...
}
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
19.09.2014, 15:41
Цитата Сообщение от Scrooge McDuck Посмотреть сообщение
Да, если изначально функцию WinMain от открывающей скобки до закрывающей обернёшь в try catch
Можно и не оборачивать - есть set_new_handler..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.09.2014, 15:41

Необычное поведение оператора инкремента
Добрый день! Это просто несчастье какое-то. Я пытаюсь посчитать коэффициенты корреляции, рассматривая строку из 16 массивов по 4 бит....

Странное поведение оператора сравнения
Доброго всем времени суток. Есть у меня такой вот скрипт: function access(button) { var expert =...

Поведение оператора echo при вызове функций
Здравствуйте, заметил вот такое поведение: function foo() { echo 'hello'; } echo foo(); // output: hello По-идее,...

Непонятное поведение поведение TIM6 на STM32f4discovery
Вводные данные: SYSCLK=168Мгц; AHB Pressotir=1; APB1 Pressotir=4; TIM6_Pessotir=3; Т.о. частота тактирования на таймере=42Мгц ...

Избыточное копирование объекта при реализации оператора умножения и оператора присваивания
Есть класс работы с матрицами. Есть операция умножения матриц, описанная как оператор класса. В данном коротком примере я просто моделирую...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru