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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ считать строку чисел в массив http://www.cyberforum.ru/cpp-beginners/thread822936.html
#include <sstream> #include <string> #include <iostream> using std::cout; using std::string; using std::istringstream; using std::endl; #define TICK 12 #define RATE 7 #define iRATE int i=0; i<RATE; i++
C++ Три числа в порядке возрастания Только начинаю программировать в Borland C++. Нужно три введенных числа, упорядочить по возрастанию. #include <iostream.h> #include <conio.h> int main() { int a,b,c; cout<< "vvedite tri chisla= ";endl; cin>>a; http://www.cyberforum.ru/cpp-beginners/thread822935.html
Вычислить первый целый корень из последовательности C++
Доброе время суток! Задали задачку - написать программу, которая из последовательности чисел выбирает первое число, корень которого - целый. Например, последовательность чисел от 30 до 80 первое число -36. Нужно сделать через цикл for. Мой вариант кода: #include <iostream> #include <cmath> using namespace std; int main() { int a, b,i; double drob, cel, j; cout << "Enter:" ; ...
Рекурсия. Напечатать в обратном порядке заданный текст C++
Помогите плз. Нужно напечатать в обратном порядке заданный текст (за текстом следует точка), используя механизм рекурсии и через цикл.
C++ сортировка массивов http://www.cyberforum.ru/cpp-beginners/thread822927.html
Дан массив чисел произвольной длины. Отсортировать массив вставкой и быстрой сортировками. Определить число сравнений и перемещений (перестановок с одного места на другое) элементов в процессе выполнения программы. Для тестирования программы заполнять массив значениями тремя спосо-бами: по возрастанию, по убыванию, случайным образом. Каждый метод сортировки, каждый способ заполнения массивов...
C++ Алгоритм Прима Здравствуйте! Я пишу программу для нахождения минимального каркаса в графе. Делаю я это с помощью алгоритма Прима. Граф задан матрицей смежности. Алгоритм, честно скажу взял с нета и немного переделал под свой граф, но он не работает, подскажите, где я ошибся. Спасибо!!! bool used; int min_e,sel_e; min_e=0; for(int i=0;i<N;++i) { int v=-1; for (int j=0; j<N; ++j)... подробнее

Показать сообщение отдельно
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
31.03.2013, 01:00  [ТС]     Непрерывное выделение памяти
Цитата Сообщение от gazlan Посмотреть сообщение
Аллокируете свой буфер - сколько надо или с запасом. Каждый вызов new_char_vec() будет возвращать указатель - смещение следующего блока памяти (0, n1, n2...)

static означает, что эта память общая для всех экземпляров класса (a la Global Heap).

Представьте, что вы батон колбасы режете: каждый получает свой кусок, и каждый новый кусок начинается там, где кончился предыдущий.

В реальных менеджерах еще проверяется запись за пределы блоков, ведется учет освобождаемых блоков и используется какая-либо стратегия дефрагментации памяти.
Да ничего я не понял.
Чем мне полезна эта функция?
Если у меня просто без выделения памяти она как бы выделяется.
От программка:
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
//klass Char_vec
#include <iostream>
using std::cout;
using std::endl;
#include <cstdlib>
using std::exit;
 
class Char_vec
{
    int sz;
    char element[1];
public:
    static Char_vec* new_char_vec(int s)
    {
        cout <<"my tyt "<<s<<' '<<endl;
        //Char_vec* a=new Char_vec[3];
    }
    char& operator[](int i){return element[i];}
};
 
int main()
{
    Char_vec a;//ob6ekt Char_vec
    a[1]='3';
    a[5]='4';
    cout <<a[1]<<a[5]<<endl;
    
    return 0;
}
от мы видим что в a[1] записалось 3, а в a[5] записалось 4.

При выводе выводит 34
Как это объяснить?
И как я могу применять эту статическую функцию?

Добавлено через 5 минут
И вообще как я на практике могу порезать этот батон памяти, чото я ничо не пойму?

Добавлено через 1 минуту
я от понимаю кода мы указатель на тип char создаем указываем его размер, ну а в этой функции new_char_vec(int) нафига int параметр передается?
 
Текущее время: 23:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru