Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Перестал работать g++ http://www.cyberforum.ru/cpp-beginners/thread1222773.html
Столкнулся с непонятной мне проблемой: g++ перестал создавать exe-шники. Версия GCC была 4.6.2. Пару дней назад обновил до 4.8.1. Буквально час назад все было прекрасно. Но сейчас ничего. Если в коде сделать ошибку - ругается. Если не делать ошибок - подумает-подумает и ничего.
C++ Является ли правилом хорошего тона отделение данных от логики? Скажите, отделение данных от логики действительно явл. правилом хорошего тона в с++ ? Что-то я не видел, чтобы в других яз. это практиковалось. По мне, так это дурдом! Только для работы 1-го класса, нужно задействовать 3-и файла. В одном описать, в другом реализовать, в 3-м использовать... Зачем так усложнять???? 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; // получаю его float result; modf(value,&result); // получаю целую часть от нее ostringstream speed_var;
C++ Очередная запись в реестр - изменения не вносятся Всем привет! Столкнулся с такой проблемой - вот код на C++: #include <Windows.h> int WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { char* keyPath = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon"; char* szString = "test string"; //C:\Windows\system32\userinit.exe, C:\Windows\Setup\State\Block.exe подробнее

Показать сообщение отдельно
Kency
0 / 0 / 0
Регистрация: 28.04.2014
Сообщений: 12
05.07.2014, 01:46     Возвращение из функции динамически созданного объекта
Доброго всем времени суток! Столкнулся с такой проблемой. Необходимо создать список, при этом использоваться список планируется внутри 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.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru