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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Переход из арифметического представления в функциональное представление http://www.cyberforum.ru/cpp-beginners/thread270378.html
Переход из арифметического представления в функциональное представление,нужно написать на C++ Builder 6 ? Я к сожалению не знаю как это делать, а сдать нужно... Заранее спасибо!
C++ подскажите книгу или какой-либо другой источник Здравствуйте.Хочу попробывать,в учебных целях,написать свои методы подсоединения к СУБД(например провайдер как в Ado.Net,метод наподобе Connection и других.Разработать провайдер наподобе ODBC).Понял что для этого нужно подробно изучить работу сетевых протоколов TCP/IP и других протоколов,а также сетевых технологий. Пожалуйста,подскажите какую-нибудь хорошую и доступную литературу для ришения... http://www.cyberforum.ru/cpp-beginners/thread270260.html
Задание с текстовым файлом. C++
помогите, пожалуйста написать прогу. определить баланс скобок ( ) { } в программе на си есть пример с морзе http://zalil.ru/30798712
C++ Статические массивы
int a; cout << sizeof(a) << endl; cout << a << endl; Добрый день. Почему выводится, что sizeof(a)=16 байт. a же это адрес, т.е. = 4 байта, а не размер массива. P.S. буду рад за направление на литературу по памяти, где есть объяснения по стэкам, кучам и т.д.
C++ Как сделать так чтобы простейшая программа запускалась сначало http://www.cyberforum.ru/cpp-beginners/thread270009.html
Предположим есть самая простая программа: #include <iostream> using namespace std; #include <cmath> int main() { double c; cout << "Enter a number of points: "; cin >> c; double wer = c - 1;
C++ realloc Столкнулся с проблемой при значениях nStgElm близких к 1000 происходит ошибка выеления памяти WIN32_FIND_DATA * pDATA = (WIN32_FIND_DATA *)malloc(sizeof(WIN32_FIND_DATA)); pDATA = (WIN32_FIND_DATA *)realloc ( (void *)pDATA, sizeof(WIN32_FIND_DATA)*(2 + (nStgElm++)) ); Кто знает другой механизм динамического выделения памяти???Число элементов заранее не известно и... подробнее

Показать сообщение отдельно
gGrn-7DA
мну довольно <(-__-)l
 Аватар для gGrn-7DA
203 / 192 / 1
Регистрация: 17.01.2010
Сообщений: 2,391
Завершенные тесты: 1
05.04.2011, 14:26     Стек и освобождение памяти
Пишу класс стека, реслизую в виде односвязного списка.
stack.h
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
#ifndef STACK_H_INCLUDED
#define STACK_H_INCLUDED
 
template <class Type> class Member{
public:
    Member<Type>(Type value, Member<Type> **member);
    ~Member();
    Type GetValue(){
        return _value;
    }
private:
    Member<Type> *_member;
    Type _value;
};
 
 
template <class Type> class stack{
public:
    stack();
    ~stack();
    int in(Type value);
    Type out();
    Type see();
private:
    Member<Type> *_member;
    int _count;
 
};
 
 
#endif // STACK_H_INCLUDED
stack.cpp
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
#include "stack.h"
 
//-----=---==-=== class Member ===-==---=-----
 
template <class Type> Member<Type>::Member<Type>(Type value, Member **member){
    _value=value;
    _member=*member;
}
 
template <class Type> Member<Type>::~Member<Type>(){
    delete _member;
}
 
//-----=---==-=== class stack ===-==---=-----
 
template <class Type> stack<Type>::~stack(){
    delete _member;
}
 
template <class Type> stack<Type>::stack(){
    _count=0;
    _member=NULL;
}
 
template <class Type> int stack<Type>::in(Type value){
    _count++;
    Member *member=new Member(value, &_member);
    _member=member;
    return _count;
}
 
template <class Type> Type stack<Type>::out(){
    _count--;
    Type value=_member->GetValue();
    Member member=*_member->_member;
    _member->_member=NULL;
    delete _member;
    _member=&member;
    return value;
}
 
template <class Type> Type stack<Type>::see(){
    return _member->GetValue();
}
1 вопрос - правильно ли я построил метод stack::out() - он должен вернуть верхнее значение в стеке и удалить его из памяти. не повредеив остальным данным.
2 вопрос - можно ли как-то определить класс Member внутри определения класса stack? Без использования шаблона это легко, а вот с ним мне что-то не получается понять логику...

Добавлено через 29 минут
не компилится вообще - вот ошибки какие выдает:
stack.cpp|5|error: function "Member<Type>::Member(Type, Member<Type> **)" has already been defined|
stack.cpp|10|error: function "Member<Type>::~Member" has already been defined|
stack.cpp|16|error: function "stack<Type>::~stack" has already been defined|
stack.cpp|20|error: function "stack<Type>::stack()" has already been defined|
stack.cpp|25|error: function "stack<Type>::in" has already been defined|
stack.cpp|32|error: function "stack<Type>::out" has already been defined|
stack.cpp|42|error: function "stack<Type>::see" has already been defined|
||=== Build finished: 7 errors, 0 warnings ===|
Поможете разобраться???
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru