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

Глючит деструктор динамическогом массива - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Двунаправленный линейный список http://www.cyberforum.ru/cpp-beginners/thread1109688.html
Всем доброго утра:) Ребят,может кто помочь,дали код сказали разобраться со списком...но я путем не понимаю что в нем происходит:(Может кто прокомментировать,пожалуйста!:( void container::In(ifstream &ifst) { shape *New; node *q, *t; t = new node; first = t; New = shape::In(ifst); t->elem = New;
C++ Хорошо ли использовать библиотеку fstream? Хорошо ли использовать библиотеку fstream? http://www.cyberforum.ru/cpp-beginners/thread1109686.html
C++ Как добавить в код библиотеку <time.h>
Привет всем! есть код для задания в справочной автовокзала хранится расписание движения автобусов. Для каждого рейса указаны его номер, тип автобуса, пункт назначения, время отбытия и прибытия. Вывести информацию об рейсах которыми можно воспользоваться для прибытия в пункт назначения раньше заданного времени.Пункт назначения и время вводятся с клавиатуры. как добавить библиотеку <time.h> ...
Ошибка доступа при записи файла C++
#include <Windows.h> #include <tchar.h> #include <stdio.h> #include <conio.h> int _tmain(int argc, _TCHAR* argv) { TCHAR strings = "This is a text.\nThis is second line of the text."; DWORD bytesWritten; HANDLE hOut;
C++ Какой должен быть итератор для константной ссылки на вектор? http://www.cyberforum.ru/cpp-beginners/thread1109670.html
Есть вектор, он передается в функцию так: #include <iostream> #include <vector> using namespace std; void func(vector<int> arg) { for(vector<int>::iterator it=arg.begin(); it!=arg.end(); ++it) cout << *it << ' '; cout << endl; }
C++ OpenCV привет. если не в тему - прошу перенести в правильный раздел. у меня вопрос по компьютерному зрению. У меня есть черно-белая фотография с градацией серого. возможно ли в opencv или в другой библиотеке, сделать так чтобы строилась карта высот, например полностью черный пиксель имел -5 а белый 0, или для этого нужно использовать что-то иное. подробнее

Показать сообщение отдельно
xTr1m
29 / 29 / 8
Регистрация: 06.03.2013
Сообщений: 151
03.03.2014, 14:13     Глючит деструктор динамическогом массива
может я чего-то не понимаю, но обычно для таких задач используют примерно следующий "приём"

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
class CTestArray
{
public:
    CTestArray(void);
    ~CTestArray(void);
 
    inline int GetCapacity() const { return m_capacity; };
    inline int GetSize() const { return m_size; };
 
    void Add(int value);
    void Delete(int index);
    void Insert(int index, int value);
    
protected:
 
    void Realloc();
 
protected:
 
    int *m_arr;
    int m_capacity;
    int m_size;
};
 
//////////////////////////////////////////////////////////////
 
void CTestArray::Realloc()
{
    m_capacity *= 2;
    int *tmp = new int[m_capacity];
 
    for(int i=0; i<m_size; ++i)
        tmp[i] = m_arr[i];
 
    delete [] m_arr;
    m_arr = tmp;
}
 
void CTestArray::Add( int value )
{
    if(m_size == m_capacity)
        Realloc();
 
    m_arr[m_size] = value;
    m_size++;
}
то есть, когда нужно добавить в массив новый элемент, мы смотрим есть ли еще место. если его нет, то выделяется новый блок памяти и потом туда копируются значения из предыдущего массива. в конце переставляем указатель на новый блок памяти. вроде бы вы говорите тоже самое, но в коде я что-то не вижу именно копирования

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if (NewCount>0)
 {
  NewSize=NewCount*sizeof(TBase);
  if (((NewSize)/sizeof(TBase))==NewCount)
  {
   Buffer=(TBase*)realloc((void*)Data, NewSize);
   if (Buffer!=NULL)
   {
    if (_msize(Buffer)==NewSize)
    {
     new (Buffer+Count) TBase(s);
     Count=NewCount;
     Data =Buffer;
     return true;
    }
   }
  }
вот тут вы выделяете новую память и потом указатель переводите на Buffer, но самой очистки и копирования я не вижу
 
Текущее время: 04:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru