HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #3351  
Старый 27.07.2009, 13:39
Glazz
Участник форума
Регистрация: 09.08.2008
Сообщений: 139
Провел на форуме:
560332

Репутация: 15
По умолчанию

а тут еще случайно память не утекает? new вызываются да вызываются , а delete я так и не видел.
 
Ответить с цитированием

  #3352  
Старый 27.07.2009, 13:47
horlyk
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
Провел на форуме:
233095

Репутация: 21
Отправить сообщение для horlyk с помощью ICQ
По умолчанию

Блин, сложно что-ли показать как нужно сделать, вместо того, чтоб придераться к тому, что меня на данном этапе не интересует. Про операторы делет я знаю, в основной программе их применяю. Я же сразу сказал что это тестовая прога и интересует меня пока именно этот момент. А про то, что моск лопается от кода - папки могли бы решить эту проблему и написать правильный пример. Раздел же называется для новичков, потому я и выясняю то что мне не понятно было в книге. Вместо того говорят литературу читать лучше... ппц
 
Ответить с цитированием

  #3353  
Старый 27.07.2009, 13:54
Fata1ex
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме:
4205500

Репутация: 930


По умолчанию

horlyk, люди хотят помочь, не стоит обижаться. Прислушайся, все равно придется вернуться к азам.

Вот именно, раздел "для новичков", а не "лабораторные работы". Если тебе нужна готовая программа, пиши туда. Здесь советы по обучению и синтаксису.

Цитата:
папки могли бы решить эту проблему и написать правильный пример
Ага, все бы за тебя сделали, а ты бы так и остался на своем уровне. Тебе же предлагают учиться самому и развиваться. Ужас правда?

Последний раз редактировалось Fata1ex; 27.07.2009 в 13:56..
 
Ответить с цитированием

  #3354  
Старый 27.07.2009, 14:03
horlyk
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
Провел на форуме:
233095

Репутация: 21
Отправить сообщение для horlyk с помощью ICQ
По умолчанию

Ну во первых - это не лабораторная работа. Я сейчас джесса либерти читаю(освой с++ за 21 день) Дошел до списков. Там на том примере понять списки не реально. Потому начал искать информацию о списках в интернете и тут. Вроде как понял. Сейчас пишу программу с использованием списков - поиск в нем, добавление узла, удаление и т.д. И там у меня такая проблема появилась. Я хотел разбить все на методы, разбил, но при вызове метода, который должен был создавать узлы и заполнять их данными у меня появилась проблема - при возврате данные все теряются, хотя при отладке смотрел, что на в процессе создания все отлично, а при выходе из этого метода все теряется. Начал думать и решать эту проблему. Написал код, который уже окрестили кодом, от которого лопается моск. Он работает, памяти больше не занимает... Вот я и попросил помощи с тем вариантом, что у меня с самого начала не заработал.

Цитата:
Сообщение от Fata1ex  
Ага, все бы за тебя сделали, а ты бы так и остался на своем уровне. Тебе же предлагают учиться самому и развиваться. Ужас правда?
Я же придумал рабочий вариант, но его, как я написал выше, окрестили кодом, от которого лопается моск. лучшего придумать не смог и написал чтоб помогли.

Последний раз редактировалось horlyk; 27.07.2009 в 14:07..
 
Ответить с цитированием

  #3355  
Старый 27.07.2009, 15:03
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

Цитата:
из мэйна я передаю указатель в метод, который принимает этот указатель и ему присваивается новый адрес оператором new. Далее изменяется значение data указателя. Дальше возврат в мэйн и вывод измененного значения на экран. Но значение остается прежним.
если ты хочешь изменить значение указателя, переданного параметром, то нада использовать ссылку на указатель. вообще такого кода лучше избегать в твоем примере, ибо это излишне усложнит код. примерно будет так.

Код:
#include <iostream>
using namespace std;

class node
{
public:
	node() { cout << "constructor...\n"; }
	~node() { cout << "destructor...\n"; }
	static void func(node* &Mynode);	
	node(node&) { cout << "copy-constructor...\n"; }
	int data;	
};
void main()
{
	node* Mynode = new node;
	Mynode->data = 5;

	node::func(Mynode);
	cout << Mynode->data << endl;
}
void node::func(node* &Mynode)
{
	delete Mynode;
	Mynode = new node;
	Mynode->data = 7;
}
метод func статический ибо иначе в твоем примере получится стремная конструкция delete this;
вообще простой совет - такие конструкции не используй никада, если уж совсем не припрет.
 
Ответить с цитированием

  #3356  
Старый 27.07.2009, 15:15
horlyk
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
Провел на форуме:
233095

Репутация: 21
Отправить сообщение для horlyk с помощью ICQ
По умолчанию

Ra$cal, спасибо, теперь понял. А лучший выход из такой ситуации какой?
 
Ответить с цитированием

  #3357  
Старый 27.07.2009, 15:33
alex912
Новичок
Регистрация: 07.06.2009
Сообщений: 9
Провел на форуме:
28710

Репутация: 5
По умолчанию

Все просто
При передаче указателя в функцию, создается копия данного указателя, который указывает в тоже самое место что и настоящий указатель. Поэтому Mynode->data = 5 срабатывает. Далее этот указатель указывает на новое место и Mynode->data = 7 уже относится к совершенно другому объекту. Как уже выше написали, если нужно изменить указатель - юзай ссылки.
 
Ответить с цитированием

  #3358  
Старый 27.07.2009, 19:05
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

Цитата:
А лучший выход из такой ситуации какой?
я не понимаю, что именно делает твой метод. чисто логически не могу понять. если ты хочешь изменить поле data, то зачем тебе перевыделять память? ты должен или напрямую изменить data, или сделать его приватной переменной и добавить геттеры и сеттеры и юзать их.
 
Ответить с цитированием

  #3359  
Старый 27.07.2009, 19:31
horlyk
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
Провел на форуме:
233095

Репутация: 21
Отправить сообщение для horlyk с помощью ICQ
По умолчанию

Понятно, еще раз спасибо.
 
Ответить с цитированием

  #3360  
Старый 28.07.2009, 23:57
SeNaP
Участник форума
Регистрация: 07.08.2008
Сообщений: 281
Провел на форуме:
3300342

Репутация: 165
По умолчанию

Проблема такая.
Как проверить на существоание дериктории, если она есть, то определить путь.
Помогите пожалуйсто
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часто задаваемые вопросы по MySQL Серый PHP 5 28.12.2006 18:26
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ