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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Специализация шаблона класса http://www.cyberforum.ru/cpp-beginners/thread856894.html
Имеется задание: Создать свой шаблонный класс – динамический массив (myvector). Создать методы этого класса. Инстанцировать для своего класса, представляющего собой строку, изготовленную из STL контейнера vector<char> (с определением в нем операций, необходимых для сортировки, в частности, операторов сравнения). Первая часть понятна, но вторая не очень. Что имеется ввиду под инстанцировать?...
C++ Передача массива в функцию Ребят, подскажите как передать массив в функцию по значению (или альтернативный вариант)? Чтобы изменялась его копия находящаяся в стеке. если передать массив ссылкой есть право его изменять т.к мы работаем с ним непосредственно. http://www.cyberforum.ru/cpp-beginners/thread856889.html
C++ "Графы"
По графу G построить граф K(G) с тем же множеством вершин что и у G; вершины в K(G) смежны тогда и только тогда когда расстояние между ними в G не превышает 2.Проверить совпадают ли степени всех вершин в K(G) и если нет то нельзя ли удалить из него одну вершину так , что бы полученный граф удовлетворял этому требованию. Помогите с программой.
Ошибка в игре Питон C++
Здравствуйте, пишу игру Питон, помогите пожалуйста исправить проблему - должно прибавляться одно звено, а прибавляется несколько, можно даже сказать, что она копируется несколько раз. Пожалуйста, по-подробнее #include <stdio.h> #include <graphics.h> #include <stdlib.h> #include <math.h> #define DT 0.1 #include <windows.h> static int BClr={RGB( 0, 255, 0), RGB( 0, 0, 255), RGB( 255, 0,...
C++ Ошибка деструктора http://www.cyberforum.ru/cpp-beginners/thread856844.html
Имеется шаблон класса- динамического массива. После создания функции push_back начал ругаться конструктор. Объясните пожалуйста в чем дело? #include<iostream> #include<time.h> #include<stdlib.h> using namespace std; template<typename T> class myvector { private: int size;
C++ Из exe в исходный код Здраствуйте. Вообщем, есть *.exe файл, написанный на Dev-C++. Можно ли из него вытащить исходный код? ( Есть ли некий аналог .NET Reflector'a ) на C++? подробнее

Показать сообщение отдельно
Linzman
0 / 0 / 0
Регистрация: 31.10.2012
Сообщений: 48
05.05.2013, 22:15     Выделение памяти в методе
Всем доброго времени суток ! У меня есть следующий метод в заголовочном файле :
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
class Array:
    public Container{
    private:
        char* data;
        int length;
    public:
        Array(int n){
        data=new char[n];
        length=n;
        }
        Array(){
            data=new char[0];}
        ~Array(){
        delete[] data;
        }
        void operator=(Array& a){
            delete[] data;
            data=new char [a.length];
            length=a.length;
            for(int i=0;i<length;i++)
                data[i]=a.data[i];
        }
}
class Group{
    private:
        Array* Name;
        Array* LastName;
        int len;
    public:
        Group(){
            len=0;      
            Name=new Array[0];
            LastName=new Array[0];
        }
        Group(int n){
        len=n;
        Name=new Array[n];
        LastName=new Array[n];
        }
        ~Group(){
        delete[] Name;
        delete[] LastName;
        }
                      void operator = (Group a){
        delete[] Name;
        delete[] LastName;
        len=a.len;
        Name=new Array[len];
        LastName=new Array[len];
        for(int i=0;i<a.len;i++){
                Name[i]=a.Name[i];
                LastName[i]=a.LastName[i];
            }
        }
Group Cut(int n,int m){
        Group b(m-n);
        for(int i=0;i<m-n;i++){
            b.Name[i]=Name[n+i];
            b.LastName[i]=LastName[n+i];
        }
        return b;
        };
        Group operator +(Group b){
            Group c(len+b.len);
            for(int i=0;i<len;i++){
            c.Name[i]=Name[i];
            c.LastName[i]=LastName[i];
            }
            for(int i=len;i<len+b.len;i++){
            c.Name[i]=b.Name[i-len];
            c.LastName[i]=b.LastName[i-len];
            }
            return c;
        }
void AddMember(int n, Array& name,Array& lastname){
            Group b;
            Group a(1);
            if(len==0){
                a.Name[0]=name;
                a.LastName[0]=lastname;
                *this=a;
            }
            else{
                if(n==len){
                b=Cut(0,len);
                        a.Name[0]=name;
                        a.LastName[0]=lastname;
                        *this=b+a;
                }
                else{
                    switch(n){
                        case 0:
                            b=Cut(0,len);
                            a.Name[0]=name;
                            a.LastName[0]=lastname;
                            *this=a+b;
                        ;
                        default:
                            b=Cut(0,n);
                            Group c=Cut(n,len);
                            a.Name[0]=name;
                            a.LastName[0]=lastname;
                            *this=(b+a)+c;
                    }
                }
            }
        };
}
При использовании последнего элемент нормально добавляется ( я пробовал к пустому списку добавлять элемент Array(не обращайте внимания что он так называется, исторически сложилось, это просто класс, содержащий длину строки и строку)) выскакивает ошибка "_Block_Type_Is_Valid", скорее всего связанная с тем что неправильно выделяется память в каком-то из конструкторов. Помогите решить проблему !
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru