Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 17.09.2015, 13:54   #21
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Всем доброго дня !
Помогите пожалуйста ответить на такой вопрос .

Код:
ref class A {};

A p1;   // если p1 - это обьект ссылочного типа , то где он лежит ?

Код:
value class A {};

A p1;   // если p1 - это обьект  типа значение , то где он лежит ?
RAFA91 вне форума
Старый 17.09.2015, 15:07   #22
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Опять, да? Да запомните уже:
1. ref - хранятся в управляемой куче, тем более вы его обычно создаете gcnew
2. value - хранятся либо в стеке, либо в управляемой куче
p51x вне форума
Старый 17.09.2015, 15:17   #23
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Опять, да? Да запомните уже:
1. тем более вы его обычно создаете gcnew
его можно и не создавать с помощью утилиты gcnew , а тупо написать

Код:
А K;
только тогда если Вы говорите , что К лежит в куче , то зачем вообще использовать для ссылочного класса утилиту gcnew ???

Цитата:
Сообщение от p51x Посмотреть сообщение
Опять, да? Да запомните уже:

2. value - хранятся либо в стеке, либо в управляемой куче
для value класса работает также утилита new
RAFA91 вне форума
Старый 17.09.2015, 16:20   #24
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
утилиты gcnew
угу и утилиты for

Цитата:
а тупо написать
можно

Цитата:
К лежит в куче , то зачем вообще использовать для ссылочного класса утилиту gcnew ???
1. в управляемой куче
2. стековый вариант описания иногда требует специальной обработки (с modreq), что возможно только в клиентах на визуал с++
3. если у вас нет деструктора у типа
4. не генерируются дефолтные конструктор копирования и оператор = со всеми вытекающими

Последний раз редактировалось p51x; 17.09.2015 в 16:35.
p51x вне форума
Старый 17.09.2015, 16:44   #25
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

честно говоря пункты 2-3 не совсем понял , но то что вижуал 2008

позволяет писать А K; это факт.

походу gcnew надо применять только для классов типа value и то

при желании.

___________________________

Код:
value class Message
{
public:
	int x;
 };

         
        Message ^P1=gcnew Message;
	Message ^P2=gcnew Message;
        P1=P2;   // утечка памяти есть , или обьект созданный как 
//  Message ^P1=gcnew Message; ушел в преисподнюю ?
RAFA91 вне форума
Старый 17.09.2015, 17:11   #26
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
но то что вижуал 2008

позволяет писать А K; это факт.
Я говорил обратное? Я вам приводил отличия в использовании.

Цитата:
походу gcnew надо применять только для классов типа value и то

при желании
Походу вам надо что-то по нормальному языку почитать, а не по смеси... а то ваша фраза звучит, как "- надо применять только для двоек и то по желанию, есть же плюс"
p51x вне форума
Старый 17.09.2015, 17:20   #27
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

с регулируемыми указателями ранее не работал , поэтому созрел такой вопрос

есть ли утечка памяти , или обьект созданный как
Message ^P1=gcnew Message; ушел в преисподнюю при выполнении P1=P2; ?

Код:
value class Message
{
public:
	int x;
 };

         
        Message ^P1=gcnew Message;
	Message ^P2=gcnew Message;
        P1=P2;
RAFA91 вне форума
Старый 17.09.2015, 18:05   #28
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не должна быть утечка. Менеджер памяти сам освободит, если на память никто более не ссылается.
I'm learning to live...
Stilet вне форума
Старый 18.09.2015, 17:37   #29
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

У меня к людям , которые знают C++/CLI такие вопросы.

1 почему при выполнении *P1=*P2; получаю ошибку ?

Код:
ref class Message
{
public:
	int x;
 };

int main(array<System::String ^> ^args)
{
	Message ^P1=gcnew Message;
	P1->x=100;
	Message ^P2=gcnew Message;
	P2->x=200;
	*P1=*P2;
	Console::WriteLine("x = {0}",P1->x);
	Console::WriteLine("x = {0}",P2->x);
	return 0;
}
2. в ссылочных классах может быть конструктор копировщик ?
3. в ссылочных классах может быть деструктор ?
4. в ссылочных классах есть стандартный оператор = ?

_________________________

Помогите пожалуйста ответить на эти вопросы.
RAFA91 вне форума
Старый 18.09.2015, 18:00   #30
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
которые знают C++/CLI
Таких еще найти надо.

1. Что вы пытаетесь сделать такой странной конструкцией? По-моему она и в С++ бессмысленна.
2. По одной из ссылок на первой странице что-то есть про это. Думаю ничто не мешает объявить конструктор принимающий объект этого класса и скопировать все поля. (в C# так можно, дефолтного конструктора копирования там нет)
3. Финалайзер можно, насчет деструктора не знаю, в C# их нет. Еще IDisposable есть.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дебаг С++/CLI Максим 116 Помощь студентам 3 27.12.2013 22:17
Ошибки в C++/CLI Максим 116 Помощь студентам 2 25.12.2013 22:45
c++/cli danzel1 Общие вопросы C/C++ 3 25.07.2011 17:11
C/C++/CLI. Ynxarmed Visual C++ 1 31.08.2010 07:43
advapi32 и C++/CLI Artem89 Общие вопросы .NET 1 20.12.2009 18:22