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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определение типа масива http://www.cyberforum.ru/cpp-beginners/thread817159.html
Всем доброго времени суток. Есть программа которая проверяет антирефлективность: int main () { int n; char x; cout<<"Enter n:"<<endl; cin>>n; cout<<"Enter elements:"<<endl; int *m=new int ; for (int i=0; i<n; i++)
C++ Задан массив D. Определить следующие суммы: Тема Процедуры и функции Задан массив D. Определить следующие суммы: D + D + D; D + D + D; D + D + D. Пояснение. Составить подпрограмму для вычисления суммы трех последовательно расположенных элементов массива с номерами от k до т. http://www.cyberforum.ru/cpp-beginners/thread817150.html
C++ Найти площадь фигуры С++ (Visual Studio 2010)
Задание в общем не сложное, но писать еще не умею, а код нужен)) Короче: нужно найти площадь заштрихованой фигуры, тоесть найти площадь 6-угольника, потом треугольника, а потом от площади 6-уг отнять площадь треугольника, и = площадь заштр.фигуры.. Кто сможет оформить огомное спасибо (и да стороны нужно задавать самому)...
Вот нашел учебник по С++! C++
Кому интересно, можете скачать здесь Запрещено размещать любые материалы, нарушающие авторские права (без разрешения правообладателя), а также ссылки на них. Запрещено давать ссылки на скачивание программ и книг с файлообменников (рапида, депозит и т.п.) и других сайтов (форумов) Правила форума
C++ помогите с реализацией алгоритма сжатия Хаффмана http://www.cyberforum.ru/cpp-beginners/thread817129.html
помогите с реализацией алгоритма сжатия Хаффмана есть код в с++ в консольном приложении, помогите сделать в форме, и чтоб выводило в выходной файл не символы, а нули и единицы // ConsoleApplication6.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> #include <vector> #include <map>
C++ Не получается осуществить ввод в конструкторе По какой-то неведомой мне причине пропускает ввод "ФИО получателя" . Прошу помощи. Вообще нужно выполнить вот это задание: Описать класс с именем ORDER, содержащий следующие закрытые переменные – члены класса (поля): • расчетный счет плательщика; • ФИО получателя; • перечисляемая сумма в руб. Написать программу, выполняющую ввод и вывод полей объекта O класса ORDER. подробнее

Показать сообщение отдельно
Why so seriouS
 Аватар для Why so seriouS
44 / 44 / 1
Регистрация: 12.03.2013
Сообщений: 167
24.03.2013, 18:26     освобождение памяти
Помогите найти ошибку, программа вилиться когда освобождаю память!
Здесь выделения памяти
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
double **CreateArray()
{
    double **pmatrix;
    int k,j;
    double delta;
 
    pmatrix = new double*[nrows];
    if(!pmatrix){
        cerr<<"Error!";
        return NULL;
    }
    
    for(k=0;k<nrows;++k){
        pmatrix[k] = new double[ncolms];
 
        if(pmatrix[k] == NULL){
            DeleteArray(pmatrix,k);
            return NULL;
        }
 
        for(j = 0;j < ncolms; ++j){
            delta = static_cast<double>(j+1) / ncolms;
            pmatrix[k][j] = EnergyAlphaParticle(delta);
        }
    }
    return pmatrix;
}
Здесь освобождаю память:
C++
1
2
3
4
5
6
7
8
9
void DeleteArray(double **pmatrix, int rows)
{
    double **prow;
    
    for(prow = pmatrix; prow < pmatrix + rows; ++prow)
        delete [] (*prow);
    
    delete [] pmatrix;
}
Кликните здесь для просмотра всего текста
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
#include <iostream>
#include <math.h>
#include <time.h>
#include <stdio.h>
#include <fstream>
#include <cstdlib>
 
using namespace std;
 
void InputDimenstion();
double** CreateArray();
void PrintMatrix(char* info,double *matr[],int print_sum);
void SortRows(double**matr);
void WriteMatrix(double *pmatrix[]);
void WriteSum(double *pmatrix[]);
void DeleteArray(double**matr,int rdel);
double EnergyAlphaParticle(double);
double ParticleCharge();
 
const double H = 1;
const double Q = 1e4;
const double Epsilon = 1e-4;
const double Alpha = 1e-9;
const double PI = 3.1415926;
const double Z = 1;
const double R1 = 0.1;
const double Beta = 1e-3;
 
const int RAND_INT = 10;
 
const char fn_matrix[] =  "matrix.txt";
const char fn_sum[] =  "sum.txt";
 
int nrows, ncolms;
 
int main()
{
    double **parray;
    InputDimenstion();
    parray = CreateArray();
    if(parray == NULL)
        return 1;
 
    PrintMatrix("Matrix energy:",parray,false);
    WriteMatrix(parray);
 
    SortRows(parray);
    PrintMatrix("Sort matrix:",parray,true);
    WriteSum(parray);
 
    //DeleteArray(parray,nrows);
    
    system("pause>0");
    return 0;
}
 
void InputDimenstion()
{
    cout<<"Matrix dimension[MxN] - ";
    cin>>nrows>>ncolms;
}
 
double **CreateArray()
{
    double **pmatrix;
    int k,j;
    double delta;
 
    pmatrix = new double*[nrows];
    if(!pmatrix){
        cerr<<"Error!";
        return NULL;
    }
    
    for(k=0;k<nrows;++k){
        pmatrix[k] = new double[ncolms];
 
        if(pmatrix[k] == NULL){
            DeleteArray(pmatrix,k);
            return NULL;
        }
 
        for(j = 0;j < ncolms; ++j){
            delta = static_cast<double>(j+1) / ncolms;
            pmatrix[k][j] = EnergyAlphaParticle(delta);
        }
    }
    return pmatrix;
}
 
void PrintMatrix(char* info,double *pmatrix[],int print_sum)
{
    double **prow, *pnode;
    int k,j;
 
    cout<<info<<endl;
 
    for(k = 0, prow = pmatrix; k < nrows; ++k, ++prow,cout<<endl){
        for(j = 0, pnode = *prow; j < ncolms; ++j, ++pnode){
            cout<<(*pnode)<<" ";
        }
        if(print_sum)
            cout<<(*(*prow + ncolms))<<" ";
    }
}
 
void WriteMatrix(double *pmatrix[])
{
    double **prow, *pnode;
    int k,j;
 
    ofstream f1("matrix.txt",ios::in);
    
    if(!f1){
        cerr<<"Cant open file!!!"<<endl;
        return;
    }
    for(k = 0, prow = pmatrix;k < nrows; ++k, ++prow){
        for(j = 0,  pnode = *prow; j < ncolms ; ++j, ++pnode){
            f1 << (*pnode);
        }
        f1 << endl;
    }
    f1.close();
}
 
void WriteSum(double *pmatrix[])
{
    double **prow;
    int k;
 
    ofstream f1(fn_sum,ios::in);
    if(!f1){
        cerr<<"Cant open file!!!"<<endl;
        return;
    }
    for(k = 0, prow = pmatrix; k < nrows; ++k, ++prow){
        f1 << (*(*prow + ncolms)) << " ";
    }
    f1.close();
}
 
void SortRows(double **pmatrix)
{
    double **prow, **prow2;
    double *pcell, *psum;
    double *tmp;
 
    for(prow = pmatrix; prow < pmatrix + nrows; ++prow)
        for(pcell = *prow, psum = *prow + ncolms; pcell < psum; ++pcell)
            *psum += *pcell;
 
    for(prow = pmatrix; prow < pmatrix + nrows - 1; ++prow)
        for(prow2 = prow + 1; prow2 < pmatrix + nrows; ++prow2){
            if((*prow)[ncolms] > (*prow2)[ncolms]){
                tmp = *prow;
                *prow = *prow2;
                *prow2 = tmp;
            }
        }
}
 
void DeleteArray(double **pmatrix, int rows)
{
    double **prow;
    
    for(prow = pmatrix; prow < pmatrix + rows; ++prow)
        delete [] (*prow);
    
    delete [] pmatrix;
}
 
double EnergyAlphaParticle(double Z)
{
    double W;
    double charge = ParticleCharge();
 
    W = charge * Q / (2 * PI * Epsilon * H) * log(Z / R1);
 
    return W;
}
 
double ParticleCharge()
{
    double charge;
    double factor = rand();
 
    charge = (Beta * factor) * Alpha;
 
    return charge;
}


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