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

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

19.09.2014, 11:04. Показов 3619. Ответов 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,035
Записей в блоге: 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,035
Записей в блоге: 1
19.09.2014, 14:00
Цитата Сообщение от Avazart Посмотреть сообщение
Сомневаюсь что закрытие других процессов поможет сильно.
может есть возможность освободить память? Например, сохранить часть малоиспользуемых данных на диск.
1
Заблокирован
19.09.2014, 14:09  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
омневаюсь что закрытие других процессов поможет сильно.
Всё, меня задолбала эта ерунда В самом деле, нет памяти - пусть софт падает, никогда ничё проверять даже не буду. Точка Всём спасибо. Осталось обсудить свопинг памяти в hiberfil.sys в Windows для очистки памяти
0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2224 / 1426 / 420
Регистрация: 16.05.2013
Сообщений: 3,649
Записей в блоге: 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 / 6724 / 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
Ответ Создать тему
Новые блоги и статьи
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru