Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 876
1

Динамическое выделение памяти внутри функции (что вернуть из функции, если не удалось выделить память?)

12.02.2016, 12:47. Показов 960. Ответов 3
Метки нет (Все метки)

такое дело, есть функция, которая выполняет некоторую операцию, функция при успешном выполнении должна вернуть 0, при ниудачном код ошибки(GetLastError) но в функции есть еще malloc, допустим памят не выделилась, мне нужно вернуть что-то отличное от 0, незнаю что, что посоветуете?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2016, 12:47
Ответы с готовыми решениями:

Динамическое выделение памяти в функции
Здравствуйте, столкнулся с такой проблемой: Нужно в функции считать из файла количество строк и...

Указатели и функции. Динамическое выделение памяти
1) Напишите программу, которая позволяет вводить динамический одно-мерный целочисленный массив и...

Динамическое выделение памяти в отдельной функции
Здрасьте! Мне необходимо динамически выделить память в отдельной функции, заполнить ее, и...

Динамическое выделение памяти для структуры в функции
Объясните не могу понять. На С++ пишу совсем недавно. Суть вопроса, при первом запуске программы...

3
Эксперт CЭксперт С++
5072 / 2257 / 331
Регистрация: 20.02.2013
Сообщений: 5,595
Записей в блоге: 19
12.02.2016, 13:23 2
Цитата Сообщение от mh-coder Посмотреть сообщение
что посоветуете?
Выделяйте память с помощью new, а если память не выделилась, выскочит исключение. А вообще, зачем Вам динамическое выделение памяти в функции? Это не есть хорошо. Лучше заверните Вашу функцию в класс, и пусть там выделением/освобождением памяти конструктор и деструктор занимаются.

Добавлено через 2 минуты
mh-coder, а вообще, лучше бы Вы, конечно, код показали. Иначе, это беспредметный разговор.
0
259 / 86 / 30
Регистрация: 29.10.2015
Сообщений: 196
12.02.2016, 13:40 3
Цитата Сообщение от mh-coder Посмотреть сообщение
функция при успешном выполнении должна вернуть 0, при ниудачном код ошибки(GetLastError) но в функции есть еще malloc, допустим памят не выделилась
Если используете такой подход без механизма обработки исключений, о котором уже упомянул коллега - то рассматривайте ситуацию с невыделением памяти тоже как ошибку. Соответственно, придумайте для этой ситуации свой код ошибки.

Например, вот тут перечислены диапазоны для разных значений getlasterror:
https://msdn.microsoft.com/en-... 85%29.aspx

Добавьте свой диапазон значений ошибок, не перекликающийся с системными.

Только тщательно документируйте и комментируйте такие фишки, иначе следующий программист, после вас разбирающийся в вашем коде, застрелится
1
Комп_Оратор)
Эксперт по математике/физике
8724 / 4455 / 598
Регистрация: 04.12.2011
Сообщений: 13,308
Записей в блоге: 16
12.02.2016, 13:52 4
mh-coder, возвращайте ноль или nullptr в зависимости от компилятора.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.02.2016, 13:52

Выделение динамической памяти внутри функции
приветствую. Изучаю С, для лушчего усвоения изобретаю велосипед - попылатся реализовать собственный...

Нужно немного переделать программу: использовать функции и динамическое выделение памяти
Помогите переделать программу в соответствии с условиями: а) для хранения массивов используйте...

Указатели, функции и динамическое выделение памяти: вывести строки с неповторяющимися данными
Задана матрица A(n,n) ,n<=15 . Написать программу, которая находит и выводит на экран номера тех...

Выделение динамической памяти для массива внутри функции
Корректно ли организована работа с памятью в приведенной ниже программе? bool foo(int *array, int...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru