Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> использование оператора "new" 
V
    Опции темы
bsa
Дата 27.8.2008, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(GLeBaTi @ 27.8.2008,  13:35)
Раскрутка стека - это когда при запуске исключения автоматически вызываются деструкторы всех стековых
объектов между throw и catch.
  Значит, если объект будет создан в куче, и вызовется исключение, то объект не уничтожится ??
нет, не уничтожится. но для его уничтожения существуют всякие стандартные "штуки", типа std::auto_ptr
Цитата(GLeBaTi @ 27.8.2008,  13:35)
Скоро я начну изучеть .Net framework
Я вообще-то не это имел в виду, а QT...  smile 
PM   Вверх
GLeBaTi
Дата 27.8.2008, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 1.2.2008
Где: г.Чебоксары

Репутация: -1
Всего: 0



Что-то я не помню чтобы в теме, говорилось о том, что при выходе из области видимости, происходит удаление ненужных объектов из стека...
  
PM MAIL   Вверх
W4FhLF
Дата 27.8.2008, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 2
Всего: 121



Плохо у тебя с памятью парень. 

Цитата(IKM2007 @  27.8.2008,  10:05 Найти цитируемый пост)
Время жизни объекта, созданного с помощью new, не ограничено областью видимости, в которой он создан.


Цитата(bsa @  27.8.2008,  12:17 Найти цитируемый пост)
Уже сто раз было сказано, что new нужно для создания объектов в "куче" (не в стеке), так как стековые объекты уничтожаются при выходе из области видимости


Цитата(Lazin @  27.8.2008,  12:51 Найти цитируемый пост)
недостаток этого метода в том, что объект живет не долго, как только он выходит из области видимости, он уничтожается, а память освобождается





--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
GLeBaTi
Дата 27.8.2008, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 1.2.2008
Где: г.Чебоксары

Репутация: -1
Всего: 0



аааа, я спутал область видимости с переполнением)))...во я дурак))

Цитата
недостаток этого метода в том, что объект живет не долго, как только он выходит из области видимости, он уничтожается, а память освобождается

А если объект создать статический ??? То тогда память не освобождается...
PM MAIL   Вверх
W4FhLF
Дата 27.8.2008, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 2
Всего: 121



Тогда память под объект резервируется в глобальной секции данных ещё на этапе компиляции. 

Это сообщение отредактировал(а) W4FhLF - 27.8.2008, 14:17


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
mes
Дата 27.8.2008, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(GLeBaTi @  27.8.2008,  14:11 Найти цитируемый пост)
А если объект создать статический ??? То тогда память не освобождается... 

смотря что Вы под этим понимаете 
1 глобальные объекты удаляется при выходе за границу  глобальной области видимости.. (при завершении программы)
2 данные расположенные в секции данных не инициализируются и не уничтожаются

Это сообщение отредактировал(а) mes - 27.8.2008, 14:20


--------------------
PM MAIL WWW   Вверх
GLeBaTi
Дата 27.8.2008, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 1.2.2008
Где: г.Чебоксары

Репутация: -1
Всего: 0



Пора закрывать эту тему))) Всем спасибо) smile 
PM MAIL   Вверх
NebelDT
Дата 30.9.2008, 20:38 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 29.9.2008
Где: RU

Репутация: -6
Всего: -10



new (и соответственно потом delete) в данном случае используются для динамического распределения памяти. Например неизвестна длинна массива!!! smile 
Код

#include <stdio.h>
main()
{
int i=0,j=0,N=0,M=1,K=1,X=0,MIN=1000;
int *A=new int[N];
scanf("%d",&N);
for(i=0;i<N;i++){
     scanf("%d",&A[i]);
}
for(i=0;i<N;i++){
   for(j=0;j<N;j++){
      if(A[i]==A[j]&&i!=j){M++;       }
      if(M>K)             {K=M;X=A[i];}
      if(A[i]<MIN)        {MIN=A[i];  }
}
M=1;
}
if(N==1){X=A[0];}
if(K==1){X=MIN; }
printf("%d",X);
return (0);
}

PM MAIL WWW YIM   Вверх
GLeBaTi
Дата 1.10.2008, 07:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 1.2.2008
Где: г.Чебоксары

Репутация: -1
Всего: 0



сПАсибоЮ, но я уже полностью разобрался)
PM MAIL   Вверх
bsa
Дата 1.10.2008, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(NebelDT @ 30.9.2008,  20:38)
Например неизвестна длинна массива!!!

Ты не поверишь! Но можно и так:
Код
#include <iostream>
#include <iterator>
#include <algorithm>

int main()
{
   int n;
   std::cout << "Input array size: " << std::flush;
   std::cin >> n;
   int array[n]; //вот это массив неизвестного изначально размера
   for(int i = 0; i < n; ++i) {
        std::cout << "Input value of array[" << i << "]: " << std::flush;
        std::cin >> array[i];
   }
   std::cout << "Input array is:\n";
   std::copy(array, array + n, std::ostream_iterator<int>(std::cout, "\n"));
   return 0;
}
И прекращай поднимать старые и/или решенные темы. Лучше просто читай, что в них написано. А то, по всей видимости, ты не очень разбираешься в вопросе. А приведенный тобой пример вообще на Си написан, если не считать пресловутого new. Более того, этот пример некорректен, так как нет соответствующего delete[], а так же тем, что оформление не соответствует ни каким правилам (например, не рекомендуется на одной строчке размещать более одного оператора (if(x) { y = t; } - это плохо), большими буквами принято называть только макроопределения, а не переменные).
PM   Вверх
GLeBaTi
Дата 1.10.2008, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 1.2.2008
Где: г.Чебоксары

Репутация: -1
Всего: 0



Извини, но,кажется, что: 
Код

std::cin >> n;
int array[n];

не скомпилируется, т.к компилятор должен знать размер массива до компиляции. smile 

PM MAIL   Вверх
J0ker
Дата 1.10.2008, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 9
Всего: 14



Цитата(GLeBaTi @ 1.10.2008,  15:40)
Извини, но,кажется, что: 
Код

std::cin >> n;
int array[n];

не скомпилируется, т.к компилятор должен знать размер массива до компиляции. smile

а ты попробуй
динамические массивы еще в 98-м кажется ввели

что за ботва... я абсолютно помню что вводили...


Это сообщение отредактировал(а) J0ker - 1.10.2008, 17:41


--------------------
user posted image
PM MAIL   Вверх
Fazil6
Дата 1.10.2008, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 7
Всего: 60



Цитата(bsa @  1.10.2008,  08:14 Найти цитируемый пост)
Ты не поверишь! Но можно и так:


Цитата(J0ker @  1.10.2008,  16:41 Найти цитируемый пост)
а ты попробуй
динамические массивы еще в 98-м кажется ввели 


Вау!!! Я что-то пропустил?
PM MAIL   Вверх
J0ker
Дата 1.10.2008, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 9
Всего: 14



Цитата(Fazil6 @ 1.10.2008,  17:06)
Цитата(bsa @  1.10.2008,  08:14 Найти цитируемый пост)
Ты не поверишь! Но можно и так:


Цитата(J0ker @  1.10.2008,  16:41 Найти цитируемый пост)
а ты попробуй
динамические массивы еще в 98-м кажется ввели 


Вау!!! Я что-то пропустил?

ммм... изучаю вопрос...


--------------------
user posted image
PM MAIL   Вверх
J0ker
Дата 1.10.2008, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 9
Всего: 14



Цитата(J0ker @ 1.10.2008,  17:41)
Цитата(Fazil6 @ 1.10.2008,  17:06)
Цитата(bsa @  1.10.2008,  08:14 Найти цитируемый пост)
Ты не поверишь! Но можно и так:


Цитата(J0ker @  1.10.2008,  16:41 Найти цитируемый пост)
а ты попробуй
динамические массивы еще в 98-м кажется ввели 


Вау!!! Я что-то пропустил?

ммм... изучаю вопрос...

вопрос изучен
variable-sized arrays были введены в C99 - который сейчас является C-стандартом, и, эатем, в C++98 - который НЕ является C++ стандартом
Т.о. это поддерживается компиляторами, заявленными как C-complaint (GCC например)
VC этот стандарт не поддерживает на данный момент
будет ли это добавлено в новом стандарте пока не знаю - выясню напишу


--------------------
user posted image
PM MAIL   Вверх
Страницы: (4) Все 1 2 [3] 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1083 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.