Форум программистов, компьютерный форум CyberForum.ru

Выделение и освобождение памяти - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Задание функций http://www.cyberforum.ru/cpp-beginners/thread681265.html
как задать функции?
C++ Визуализация расчетов Имеется рабочая программа на Си. В результате её работы получается текстовый файл, содержащий три координаты каждой точки XYZ. Данных много и они записаны в столбик: 1500 2300 50 1500 2350 52 1500 2400 61 Какими средствами эти результаты можно преобразовать в растр или представить в виде трехмерной поверхности? (не используя Matlab) http://www.cyberforum.ru/cpp-beginners/thread681264.html
Структура выводит мусор C++
здравствуйте. Почему данный код выводит мусор? Я неправильно присваиваю? void poisk_cena(){ if (est){ dvd *p1 = new dvd; int rub; cout<<"Задайте цену: "; cin>>rub; //******* dvd *p2 = new dvd;// сюда сохр отсортированные диски
Найти площадь прямоугольника C++
пожалуйста помогите разобратся в Рекурсии. не могу понять етот код: #include<iostream> #include<conio.h> using namespace std; int S(int n,int m){ if(n==m==1) return 1; if(n>1)
C++ Определить ближайшее нечетное число меньше заданного числа N, которое делится на 15 с остатком 6 http://www.cyberforum.ru/cpp-beginners/thread681246.html
Определить ближайшее нечетное число меньше заданного числа N, которое делится на 15 с остатком 6
C++ В коде вызов двух функций, фактически вызывается всего одна Скажите, почему если в функции я пишу void risAll(int a){ risVerh(a); risNiz(a); } он выполняет только risVerh? подробнее

Показать сообщение отдельно
Buildog
40 / 40 / 2
Регистрация: 29.04.2012
Сообщений: 185
26.10.2012, 19:30     Выделение и освобождение памяти
Доброго времени суток. Пишу класс по ООП, и назрел один вопрос, связанный с моментом выделения и освобождения памяти.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class SOK
{
public:
    SOK(int number);
    ~SOK();
    void Show () const;
    void ChangeNumb (int Numb);
    SOK (const SOK &);
 
private:
    int *pOsnova;
    int *pOstatok;
    int NumbCount;
};
C++
1
2
3
4
5
6
7
8
9
10
11
...
pOstatok = new int [NumbC];
    pOsnova = new int [NumbC];
    cout<<"Ostatok { ";
    for (int i=0; i<NumbC; i++)
    {
        pOstatok[i]=n%A[i];
        pOsnova[i] = A[i];
        cout<<pOstatok[i]<<" ";
    }
...
C++
1
2
3
4
5
6
7
SOK::~SOK ()
{
    delete []pOstatok;
    pOstatok = 0;
    delete []pOsnova;
    pOsnova=0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
SOK::SOK (const SOK & rhs)
{
    pOsnova = new int (NumbCount);
    pOstatok = new int (NumbCount);
    NumbCount = rhs.NumbCount;
    for (int i=0; i<NumbCount; i++)
    {
        pOsnova[i] = rhs.pOsnova[i];
        pOstatok[i] = rhs.pOstatok[i];
    }
}

Собственно возникшая проблема состоит в следующем, вот в таком варианте (прошу обратите внимание на скобки, при выделении и освобождении памяти) Программа в самом конце выдаёт исключительную ситуацию, при вызове деструктора. Если я в конструкторе, в выделении памяти ставлю круглые скобки, то деструктор так же работает неправильно, НО! Если я в конструкторе-копировщике пишу так же, как в конструкторе:
C++
1
2
    pOsnova = new int [NumbCount];
    pOstatok = new int [NumbCount];
Ошибку выбивает сразу же...
"Debug error... Invalid allocation size:...."

В чем причина? Что за колдовство со скобками?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru