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

Размещение объектов в заданных блоках памяти - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Подскажите, почему для каждого объекта в программе выдает две ошибки http://www.cyberforum.ru/cpp-beginners/thread843768.html
Вот ошибки: error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "o_enemy" error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает В чем может быть причина?
C++ Сортировка массива структур void sortByFio() { int i,j; char temp; char temp2; char temp3; for (i = 0; i<len; i++) { for ( i = j+1; j<len; j++) { if (book.fio > book.fio) { temp = book.fio; book.fio = book.fio; http://www.cyberforum.ru/cpp-beginners/thread843763.html
работа с бинарными файлами в языке c C++
аписать программу для создания исходного двоичного файла чисел (тип чисел указан в варианте) с произвольным количеством элементов. Предусмотреть возможность задания количества элементов и их значения двумя способами: с клавиатуры (до 10 элементов); с помощью датчика случайных чисел (свыше 10 элементов). Исходные данные задать, учитывая специфику конкретного варианта. Реализовать задание в...
C++ Реализация метода Адамса 4-ого порядка
Всем доброго времени суток! Задали решить дифференциальное уравнение методом Адамса 4-ого порядка и вывести график f(t,alpha). Имеется динамическая система, уравнение движения которой имеет вид (m1/3)*L^2*ddalpha = -k*dalpha-m2*R*g-C*alpha-m1*g*(L/2)*sin(alpha) , где dalpha - производная первого порядка от alpha, а ddalpha - второго порядка. Насколько я понял, в методе Адамса 4-ого порядка...
C++ Поднести матрицу к натуральному степеню http://www.cyberforum.ru/cpp-beginners/thread843747.html
помогите пожалуйста по С++. Нужно поднести матрицу к натуральному степеню. Заранее благодарю за помощь
C++ Копирование данных из файла в отображение. STL Суть такова. Написал программку. Предполагается, что работает она так: открывает текстовый файл, весь этот файл заливает в строку string, потом осуществляет итерацию по этой строке, посимвольно проверяя её значения. Если символ это апостроф " ' ", то в зависимости от буквы стоящей за ним записывается слово (английские сокращения 've, 'm, 's, 'll, 't) have, am, is, will и not соответственно. Если... подробнее

Показать сообщение отдельно
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1

Размещение объектов в заданных блоках памяти - C++

20.04.2013, 23:54. Просмотров 428. Ответов 5
Метки (Все метки)

Здорова!
Есть от код:
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
//razmewenie ob6ektov v zadanux blokax pam9ti
#include <iostream>
using std::cout;
using std::endl;
 
class X
{
public:
    X(int){};
    
};
 
class Arena
{
public:
    virtual void* alloc(size_t)=0;
    virtual void free(void*)=0;
};
 
void* operator new(size_t sz, Arena* a)
{
    cout <<"Mu zdec6"<<endl;
    a->alloc(sz);
}
 
 Arena* Persistent;
 Arena* Shared;
 
void g(int i)
{
    X* p= new(Persistent)X(i);//X v arena Persistent
    X* q= new(Shared)X(i);//X v arene Shared
    //...
}
 
void destroy(X*p, Arena* a)
{
    p->~X();//vuzov dectryktora
    a->free(p);//acvobojdenie 
}
 
int main()
{
    
    g(2);
    return 0;
}
В главе говориться что объект X размещается в блоках типа Arena. ну я от сделал как бы рабочий примерчик:
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
//razmewayuchee new
//razmewenie ob6ektov v zadanux blokax pam9ti
#include <iostream>
using std::cout;
using std::endl;
#include <cstdlib>
using std::malloc;
 
//klacc kotorui bydet razmechatc9
class X
{   
int b;
int c;
public:
    void print(){cout <<"eto ob6ekt X"<<endl;}
};
 
//klacc v kotorui bydyt razmechatc9 bazovui
class Arena
{
public:
    virtual void* alloc(size_t)=0;
    virtual void free(void*)=0;
    virtual void print()=0;
};
//nepocredctvenno klacc dl9 razmecheni9
class Arena_1 : public Arena
{
    int i;
public:
    virtual void* alloc(size_t size)
    {
        cout <<"vudelenie pam9ti"<<endl;
        //return malloc(size);//vudelenie novoi pam9ti ne goditc9
        return new(size_t);
    }
    virtual void free(void* p)
    {
        free(p);
    }
    virtual void print()
    {
        cout <<"vuzov Arena_1"<<endl;
    }
};
 
//pomechaem ykazatel6 v lyubom klacce type Arena
void* operator new(size_t sz, Arena* a)
{
    cout <<"Mu zdec6"<<endl;
    
    //a->print();
    a->alloc(sz);
}
 
int main()
{
    //cozdaem ob6ekt type Arena - Arena_1
    Arena_1 obj;//ob6ekt
    //Arena_1 *p=&obj;//ykazatel6 ykazuvaem na ob6ekt
    X* ptr = new(&obj)X;//vuzov operator new c parametrom
    ptr->print();
    cout <<sizeof(ptr)<<endl;//4 byte xot9 X doljen vecit6 8 byte
    cout <<sizeof(X)<<endl;//8byte
    obj.print();
    
    return 0;
}
Я думаю не правильно потому, что у меня новая память вроде выделяется malloc(size) а нужно наверно как то в старую память встроить????????
Не как не могу разобраться как встроить объект. Еще в главе так написано ничо не расписано.

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