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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.07.2010, 04:02   #11
Oleg_SK
Пользователь
 
Регистрация: 06.06.2010
Сообщений: 42
По умолчанию

Не знаю как насчет возможностей языка C#, однако то, что он - интерпретируемый, напрочь отбивает желание с ним связываться...
Благодарю всех за ответы!
Oleg_SK вне форума Ответить с цитированием
Старый 03.07.2010, 05:01   #12
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Oleg_SK
он не интерптетируемый. jit компиляция и интерпретация разные вещи.

но все же да, желания с ним связываться нет
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 05.07.2010, 05:03   #13
Oleg_SK
Пользователь
 
Регистрация: 06.06.2010
Сообщений: 42
По умолчанию

Возникла еще пара вопросов по теме использования статических локальных переменных:
1) Может ли функция возвращать указатель на свою статическую локальную переменную, чтобы вызвовшая ее функция тоже могла поюзать эту переменную?
2) Возможно ли удалить статическую локальную переменную, чтобы освободить занимаемую ей память? Если - да, то как это сделать?

Последний раз редактировалось Oleg_SK; 05.07.2010 в 05:13.
Oleg_SK вне форума Ответить с цитированием
Старый 05.07.2010, 06:30   #14
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
2Oleg_SK
он не интерптетируемый. jit компиляция и интерпретация разные вещи.

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

p.s. давайте по теме, а то сейчас наговорите.

Цитата:
1) Может ли функция возвращать указатель на свою статическую локальную переменную, чтобы вызвовшая ее функция тоже могла поюзать эту переменную?
2) Возможно ли удалить статическую локальную переменную, чтобы освободить занимаемую ей память? Если - да, то как это сделать?
В обоих случаях делайте указатель на какой то тип данных как статик переменную, и делайте и возвращайте его куда угодно.
BOBAH13 вне форума Ответить с цитированием
Старый 05.07.2010, 13:18   #15
Loji
Новичок
Джуниор
 
Регистрация: 04.07.2010
Сообщений: 38
По умолчанию

Цитата:
Сообщение от Oleg_SK Посмотреть сообщение
Сабж. Прочитал, что статические локальные переменные использовать не рекомендуется и вместо них нужно использовать переменные объявленные в namespace. Вот только как именно это сделать мне не совсем понятно. Я верно понимаю, что имеется ввиду вместо статических локальных переменных использовать глобальные переменные объявленные в namespace? И еще, хотелось бы узнать: чем плохи статические локальные переменные, и по чему их использование не рекомендуется?
Видимо причина кроется в том, что много объектов будут дергать одну и ту же переменную. Т.е. это нормально, но, принцип скорее всего такой , - как и с безусловными переходами, - чем их меньше , тем менее запутана программа , или что то в этом роде.

Переменные объявленные в namespace? Хм , а разве можно их там объявлять? В пространстве же проде бы только классы, делегаты, интерфейсы, перечисления, структуры разрешено выносить.

Цитата:
Сообщение от Oleg_SK Посмотреть сообщение
Возникла еще пара вопросов по теме использования статических локальных переменных:
1) Может ли функция возвращать указатель на свою статическую локальную переменную, чтобы вызвовшая ее функция тоже могла поюзать эту переменную?
2) Возможно ли удалить статическую локальную переменную, чтобы освободить занимаемую ей память? Если - да, то как это сделать?
Такие вопросы обычно не задают, а сами своими ручками проверяют за компом и открывают гугл.

1 ) а почему не может? Главное чтобы возвращаемый тип данных был виден обоим функциям.

2 ) То, что создано в статической памяти нельзя никак удалить, и память под эти переменные отводится на этапе запуска программы ( если не ошибаюсь), но если ты ее объявишь например так static int^ a=gcnew int(3); Иными словами в динамической памяти, то проблем не возникает, - именно поэтому и была создана динамическая память , присвоить ей значение nullptr сразу сделает ее видимой для сборщика мусора , и после этого память занимаемая ей будет освобождена. Сам же статический указатель на тип int ты никак не удалишь.

Вообще сейчас на нынешнем развитии проблем с памятью обычно не возникает. Иными словами, если ты будешь писать какой то масштабный большой по объему проект , рассчитанный на годы написания и который будет писаться десятками людей одновременно, тогда тебе стоит только думать о памяти.


Цитата:
Сообщение от Oleg_SK Посмотреть сообщение
Не знаю как насчет возможностей языка C#, однако то, что он - интерпретируемый, напрочь отбивает желание с ним связываться...
Благодарю всех за ответы!
C# компилируемый язык.

Все языки компилируются как C++,C#, VB и все переводятся в промежуточный язык MSIL. В чем и прелесть технологии Microsoft, что можно на любом языке писать одно и тоже. Все эти языки являются надстройками для MSIL.

Последний раз редактировалось Loji; 05.07.2010 в 14:01.
Loji вне форума Ответить с цитированием
Старый 05.07.2010, 14:28   #16
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от Loji Посмотреть сообщение
Переменные объявленные в namespace? Хм , а разве можно их там объявлять?
ну а почему же нельзя? ) Можно. Думаю рекомендуют это затем, что это в стиле C++. В C нет модулей как таковых, нет разделения пространств имён, а в C++ ввели, так что надо пользоваться - удобно


Цитата:
2 ) То, что создано в статической памяти нельзя никак удалить, и память под эти переменные отводится на этапе запуска программы ( если не ошибаюсь), но если ты ее объявишь например так static int^ a=gcnew int(3); Иными словами в динамической памяти, то проблем не возникает, - именно поэтому и была создана динамическая память , присвоить ей значение nullptr сразу сделает ее видимой для сборщика мусора , и после этого память занимаемая ей будет освобождена. Сам же статический указатель на тип int ты никак не удалишь.
Память под них выделяется на этапе компиляции, собственно потому и удалить нельзя ) И в C++ нет сборщика мусора.

Цитата:
Все языки компилируются как C++,C#, VB и все переводятся в промежуточный язык MSIL. В чем и прелесть технологии Microsoft, что можно на любом языке писать одно и тоже. Все эти языки являются надстройками для MSIL.
Не путайте C++ и майкрософтовское поделие C++/CLI )
netrino вне форума Ответить с цитированием
Старый 05.07.2010, 14:30   #17
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Народ, кто о чем говорит, один сказал (верно) о C#, другой опровергает, так как думает о С++ по моему ответ дан, и наверное не стоит продолжать показывать кто умнее
BOBAH13 вне форума Ответить с цитированием
Старый 05.07.2010, 18:08   #18
Loji
Новичок
Джуниор
 
Регистрация: 04.07.2010
Сообщений: 38
По умолчанию

Цитата:
Сообщение от netrino Посмотреть сообщение
ну а почему же нельзя? ) Можно. Думаю рекомендуют это затем, что это в стиле C++. В C нет модулей как таковых, нет разделения пространств имён, а в C++ ввели, так что надо пользоваться - удобно



Память под них выделяется на этапе компиляции, собственно потому и удалить нельзя ) И в C++ нет сборщика мусора.



Не путайте C++ и майкрософтовское поделие C++/CLI )
1 Обычно когда я открываю namespace (intellisence) я вижу там набор того о чем я написал, а не список переменных. Framework тебе и пример. Че я написал, потому, что когда то пробовал создать переменную в пространстве имен, и ничего не вышло.
Я не вникал что там было на С еще в допотопные времена, я пишу что есть сейчас,, ссылаясь на CLR.

2 Сборщик мусора есть в С++, C#, VB CLR , а в Native C++ нет, там нужно вызывать Dispose(); собсно мог бы сам догадаться судя со значка '^' в примере, не понимаю вообще о чем спор.

3 Я не знаю что я там путаю у вас, но что есть я то и написал, есть утилита Дизасемблер MSIL , где ты можешь своими глазами посмотреть во что превратился твой написанный код. Найти можно в пакете Microsoft Windows SDK после инсталяции.

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Народ, кто о чем говорит, один сказал (верно) о C#, другой опровергает, так как думает о С++ по моему ответ дан, и наверное не стоит продолжать показывать кто умнее
В чем я не прав.
Loji вне форума Ответить с цитированием
Старый 05.07.2010, 18:08   #19
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Народ, кто о чем говорит, один сказал (верно) о C#, другой опровергает, так как думает о С++ по моему ответ дан, и наверное не стоит продолжать показывать кто умнее
Вопрос не в том ведь, кто умнее, но в том, чтобы ТС ответ верный получил ) И каким боком тут C#

2Loji, В C++(который нормальный) нет сборищика мусора, и Dispose() тоже нет ) В C++/CLI, согласен, есть, но, очевидно, не о нём сейчас речь. C++/CLI разрабатывался компанией Microsoft для их платформы .NET, C++(нормальный) компилируется в родной код, а не в MSIL

Последний раз редактировалось netrino; 05.07.2010 в 18:11.
netrino вне форума Ответить с цитированием
Старый 05.07.2010, 18:21   #20
Loji
Новичок
Джуниор
 
Регистрация: 04.07.2010
Сообщений: 38
По умолчанию

Цитата:
Сообщение от netrino Посмотреть сообщение
Вопрос не в том ведь, кто умнее, но в том, чтобы ТС ответ верный получил ) И каким боком тут C#

2Loji, В C++(который нормальный) нет сборищика мусора, и Dispose() C++(нормальный) компилируется в родной код, а не в MSIL
1 Если нет не сборщика мусора, нет Dispose(); то тогда как там удаляются объекты? , деструкторов нет?

2 Что вы имеете ввиду под словом "родной код"?

Последний раз редактировалось Loji; 05.07.2010 в 18:25.
Loji вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как использовать переменные в ссылках на ячейки Klamm Microsoft Office Excel 6 14.04.2012 01:44
Title на форме. Как можно перерисовать caption на form? Или убрать его и вместо использовать картинки Шульц Общие вопросы Delphi 37 02.10.2010 09:46
Что можно использовать вместо динамических массивов. Evgen1503 Общие вопросы Delphi 8 14.01.2010 21:54
использование конструкции "using <namespace>::<namespace-member>" happy_horror Общие вопросы C/C++ 5 08.03.2009 15:30
Как правильно использовать переменные в процедурах nikolai_P Microsoft Office Excel 22 15.05.2008 13:15