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

Ошибка в работе с памятью - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Построение графиков http://www.cyberforum.ru/cpp-beginners/thread858586.html
Помогите, пожалуйста, решить задачу! Кривая спроса описана функцией f(x)=х+1, а кривая предложения- f(х)=200-х. Построить таблицу функций f(х) на отрезке . Написать программу построения графиков функций.
C++ Одномерные массивы (сумма отрицательных элементов, произведение между максимальным и минимальным элементами, упорядочить по возрастанию) Здравствуйте!У меня к вам просьба,вы не могли бы мне помочь с решением задачи на массивы!Написать нужно на Си++ В одномерном массиве, состоящем из п вещественных элементов, вычислить: 1) сумму отрицательных элементов массива; 2) произведение элементов массива, расположенных между максимальным и минимальным элементами. Упорядочить элементы массива по возрастанию. помогите пожалуйста! http://www.cyberforum.ru/cpp-beginners/thread858583.html
Проблемы с компиляцией C++
пишу простенькую прогу, переводящую число в часы, секунды и минуты. Появляется вот это: fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source? Пробовала добавлять в начало #include "stdafx.h", не помогло, в настройках отключать тоже пробовала, ничего не помогает, что можно с этим сделать?
C++ использование процедур (вычислить значение выражения)
Даны действительные числа s,t. Получить g(1.2,s)+g(t,s)-g(2s-1,st), где g(a,b)=(a^2+b^2)/(a^2+2ab+3b^2+4).
C++ Подпрограмма. Рассмотреть отрезки последовательности a1...an http://www.cyberforum.ru/cpp-beginners/thread858543.html
Даны натуральное число n, целые числа a1...an. Рассмотреть отрезки последовательности a1...an (подпоследовательности идущих подряд членов), состоящие из а) полных квадратов; б) степеней пятерки; в) простых чисел. В каждом случае получить наибольшую из длин рассматриваемых отрезков. (Определить процедуры, позволяющие распознавать полные квадраты, степени пятерки, простые числа.)
C++ Обьяснить код #include <iostream> #include <string> using namespace std; class school { protected: int nomer; float staj; public: school():nomer(0),staj(0) подробнее

Показать сообщение отдельно
Tim Berg
0 / 0 / 0
Регистрация: 04.12.2012
Сообщений: 13

Ошибка в работе с памятью - C++

07.05.2013, 19:15. Просмотров 360. Ответов 4
Метки (Все метки)

После использования программы и последующего выхода из нее возникает ошибка HEAP CORRUPTION DETECTED.
Хотелось бы узнать, в чем причина и как в данном случае правильно выделить и освободить память.
Был бы очень признателен, если б кто-нибудь смог отработать программу и указать на допущенные ошибки, т.к. очень нужно чтобы программа работала гладко, без ошибок.
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
#include "stdafx.h"
#include "iostream"
#include "Stack.h" // библиотека "Стек"
 
using namespace std;
 
int main()
{
    int choice; // Выбор операции над стеком
    Stack st; // Создаем стек
    bool quit = true; // если false, выходим из цикла
 
    while (quit == true)
    {
        cout << "(0)Quit (1)Push (2)Pop (3)Show (4)Tail: ";
        cin >> choice; // номер операции
 
        switch (choice)
        {
        case 1: // Добавить элемент в стек
            st.Push();
            st.Show();
            break;
 
        case 2: // Извлечь элемент из стека
            st.Pop();
            st.Show();
            break;
 
        case 3: // Показать текущие значения элементов стека
            st.Show();
            break;
 
        case 4: // Показать вершину стека (последний элемент)
            st.Tail();
            break;
 
        default: // В остальных случаях выходи из цикла
            quit = false;
            break;
        }
    }
 
    system("pause"); // стоп-консоль
 
    return 0;
}
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
// ==================================== Stack ======================================
// 
// Класс Stack - реализует структуру данных "стек", 
// позволяет оперировать символьными данными.
// При каждом проталкивании в "стек" элемент записывается в массив char'ов,
// а length увеличивается на единицу.
// При извлечении элемента из "стека" length уменьшается на единицу.
//
// =================================================================================
 
 
class Stack
{
public:
    Stack();                // конструктор, инициализирует length нулевым значением,
                            // выделяет память для data
    ~Stack();               // деструктор, освобождает память, выделенную под data
    void Push();            // проталкивание элемента в стек
                            // увеличивает length на 1
    void Pop();             // извлечение элемента из стека
                            // уменьшает length на 1
    void Tail();            // отображает вершину стека
    void Show() const;      // отображает эелементы стека
 
private:
    char *data; // элементы стека
    int length; // длина стека
};
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
#include "stdafx.h"
#include "iostream"
#include "Stack.h"
 
using namespace std;
 
Stack::Stack():
    length(0), // инициализация нулевой длины стека
    data(new char[])
{}
 
Stack::~Stack()
{
    delete[] data;
    data = 0;
}
 
void Stack::Push() // добавление элемента в стек
{
    char element; // элемент стека
 
    cout << "New element: "; // приглашение добавить элемент в стек
    cin >> element;
 
    data[length] = element; // эелементы храним в массиве
    length++; // при добавлении элемента увеличиваем длину стека
}
 
void Stack::Pop() // извлечение элемента из стека
{
    if (length > 0) // если стек не пустой, извлекаем элемент
    {
        cout << "Pop element: " << data[length - 1] << endl;
        length--;
    }
    // иначе - сообщение о пустом стеке в функции Show()
}
 
void Stack::Tail() // отображаем вершину стека
{
    if (length > 0) // если стек не пустой,
    {
        cout << "Tail element: " << data[length - 1] << endl;
        // отображаем вершину стека
    }
    else // если пустой,
    {
        cout << "Stack is empty!" << endl;
    }
}
 
void Stack::Show() const
{
    if (length > 0) // если стек не пустой,
    {
        for (int i = 0; i < length; i++)
        {
            cout << data[i]; // отображаем все эелементы
            if (i != length - 1) // после каждого элемента, кроме последнего
            {
                cout << ", "; // ставим запятую
            }
            else // если элемент последний,
            {
                cout << endl; // то перевод строки
            }
        }
    }
    else // если стек пустой
    {
        cout << "Stack is empty!" << endl;
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru