Форум программистов, компьютерный форум, киберфорум
Наши страницы

Оператор new внутри функции - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нужна подмога в C++, необходимо реализовать несложную игру http://www.cyberforum.ru/cpp-beginners/thread810756.html
Вот, собственно, задание: Написать программу, реализующую игру "Кто первый скажет сто". Играют двое. Игроки по очереди вводят числа из интервала .Вводимые числа складываются. Игра продолжается до...
C++ Удалить со строки слова Всем доброго времени суток. Мне нужно удалить со строки все слова которые начинаются на гласную с помощью: 1) Строки как массива символов. 2) Строки как класса string. Помогите пожалуйста.... http://www.cyberforum.ru/cpp-beginners/thread810752.html
Массив, объявленный как двумерный, является одномерным C++
Сабж в теме. Объявляю двумерный массив 5х5 строкой float mas; Затем заполняю его данными с клавиатуры. При компиляции ошибок никаких, но во время дебага тип массива определяется как float*. Притом,...
Битовые поля структур: что такое и зачем они нужны? C++
Собственно, вопрос в заголовке. Читал Шилдта, но там эта тема довольно расплывчата. Надеюсь, кто-нибудь сможет доходчиво объяснить.
C++ постфиксная перегрузка поная запись http://www.cyberforum.ru/cpp-beginners/thread810715.html
Здарова! создал класс Int2 как бы моделирующий int в нем решил перегрузить все операторы которые токо есть с вызовом в короткой форме и в полной. оператор постфиксный ++ перегрузил так Int2...
C++ функции и матрицы всем привет! задание следующее: Написать функции: 1. создания матрицы размерности , элементы матрицы А – вещественные числа. Параметры функции – сама матрица, ее размерность. 2. печати матрицы.... подробнее

Показать сообщение отдельно
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
21.03.2013, 14:39
Цитата Сообщение от hotpil Посмотреть сообщение
неверен, так как локальная переменная исчезает после выхода из функции и указатель на нее возвращать бессмысленно. Но вот такой код выводит же правильный ответ (то есть 6):

C++
1
2
3
4
5
6
int main () {
 int *k;
 k=f_bad(6);
 cout << "k= " << *k << endl;
 return 0;
}
Тогда в чем ошибка?
ошибка в том что ты возвращаешь указатель на память где лежала локальная переменная, и что там никому не ведомо, и если повезет(как в большинстве случаев и происходит) на место где была локальная переменная ничего не запишется,

Цитата Сообщение от hotpil Посмотреть сообщение
И второй вопрос: корректна ли функция вроде

C++
1
2
3
4
5
int* func(int j) {
 int* a=new int;
 *a=j;
 return a;
}
Она тоже "работает":
C++
1
2
3
4
5
6
int main () {
 int *k;
 k=func(5);
 cout << "k= " << *k << endl;
 return 0;
}
ты по указателю записал значение, и вернул указатель, по выходу из функции она вернет копию указателя и ты ее используешь, корректность поведения зависит от конкретного случая - надо ли тебе это или нет, но такие конструкции чреваты утечками памяти, ибо память никто не чистит
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru