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

Возвращение из функции динамически созданного объекта - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перестал работать g++ http://www.cyberforum.ru/cpp-beginners/thread1222773.html
Столкнулся с непонятной мне проблемой: g++ перестал создавать exe-шники. Версия GCC была 4.6.2. Пару дней назад обновил до 4.8.1. Буквально час назад все было прекрасно. Но сейчас ничего. Если в коде...
C++ Является ли правилом хорошего тона отделение данных от логики? Скажите, отделение данных от логики действительно явл. правилом хорошего тона в с++ ? Что-то я не видел, чтобы в других яз. это практиковалось. По мне, так это дурдом! Только для работы 1-го класса,... http://www.cyberforum.ru/cpp-beginners/thread1222763.html
C++ C++ классы и иерархия
Цветы, травы и овощи являются растениями. Создайте необходимые классы и иерархию . Помогите пожалуйста решить )) буду очень признателен
Двухсвязный список (разбиение кода на файлы) C++
Есть стандартный код реализации шаблонного двухсвязного списка: #include <iostream> using namespace std; template <typename T> struct Elem { // Любые данные
C++ Dll инъекция, получение значения по адресу http://www.cyberforum.ru/cpp-beginners/thread1222704.html
Провожу инъекцию dll, в ней нужно получить значение по адресу из этого же АП. float* mySpeed = (float *)0x0C25D2E4; // адрес где хранится нужное мне значение float value = *mySpeed; // получаю...
C++ Очередная запись в реестр - изменения не вносятся Всем привет! Столкнулся с такой проблемой - вот код на C++: #include <Windows.h> int WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { char* keyPath = "SOFTWARE\\Microsoft\\Windows... подробнее

Показать сообщение отдельно
Kency
0 / 0 / 0
Регистрация: 28.04.2014
Сообщений: 12

Возвращение из функции динамически созданного объекта - C++

05.07.2014, 01:46. Просмотров 314. Ответов 5
Метки (Все метки)

Доброго всем времени суток! Столкнулся с такой проблемой. Необходимо создать список, при этом использоваться список планируется внутри main, а формироваться он должен внутри другой функции. Код ниже:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// условно: узел списка
class TProc {
public:
    int i;
    TProc* next;
};
 
// условно: функция, формирующая список
void graphing(TProc* head)
{
    // фрагмент функции
    TProc* temp = new TProc;    // веделение памяти при создании нового узла
    temp->i = 1;
    temp->next = NULL;
    head = temp;    // теперь head и temp указывают на одну область
}       // А здесь, как я понимаю, выделенная память освобождается
 
int main ( )
{   setlocale (LC_CTYPE, "rus");
 
    TProc* head = NULL;
    graphing(head);
    cout << head->i;    // при попытке обращения к элементу - программа крашится
                           // я предполагаю из-за того, что выделенная внутри graphing память была освобождена
    return 0;
}
Судя по всему, при завершении функции graphing происходит освобождение всей выделенной внутри нее памяти. Это нормальная ситуация? Что-то подсказывает, что так быть не должно, я ведь delete не использовал.

Избежать ошибки можно, если:
C++
1
TProc* head;
объявить глобальной. Но такой вариант для меня не подходит. Скажите, как можно избежать ошибки, чтобы при этом head по-прежнему передавался graphing?? Существует ли вообще такой способ? Спасибо.
UPD: компилятор gcc.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru