Форум программистов, компьютерный форум 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 подробнее

Показать сообщение отдельно
DrOffset
6422 / 3796 / 878
Регистрация: 30.01.2014
Сообщений: 6,585
05.07.2014, 04:11     Возвращение из функции динамически созданного объекта
Цитата Сообщение от Kency Посмотреть сообщение
А здесь, как я понимаю, выделенная память освобождается
Нет. Не освобождается.
Цитата Сообщение от Kency Посмотреть сообщение
Судя по всему, при завершении функции graphing происходит освобождение всей выделенной внутри нее памяти. Это нормальная ситуация? Что-то подсказывает, что так быть не должно, я ведь delete не использовал.
Как уже сказали, в функцию ушла копию указателя из main - head. Либо ссылка на указатель, либо указатель на указатель нужно использовать, чтобы получить измененный указатель через параметр. Либо, что более правильно, использовать возврат значения:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
TProc * graphing()
{
    TProc* temp = new TProc;
    temp->i = 1;
    temp->next = NULL;
    return temp;
} 
 
int main()
{   setlocale (LC_CTYPE, "rus");
 
    TProc* head = graphing();
    cout << head->i; 
}
PS. для инициализации полей лучше использовать конструкторы.
 
Текущее время: 01:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru