[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    а ничего, что топик по С и С++?
     
  2. freshman

    freshman New Member

    Joined:
    1 Aug 2010
    Messages:
    37
    Likes Received:
    0
    Reputations:
    0
    надо длл зделать не в яве :) а на си ..
     
  3. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    Всем привет.
    Пишу свой аллокатор памяти. Возникла трудность. Как инициализировать статический массив в классе?

    Код ниже. Заранее спасибо.

    PHP:
    class CMemMgr
    {
    public:
       static 
    voidallocate(UInt32 size);
       static 
    void free(void *ptr);

       
    // allocation status
       
    static UInt32 mError;
    protected:
       static 
    bool mIsReady;

    private:
       static 
    void init();
       static 
    UInt32 findFreeAddress(UInt32 pagesNumber);
       static 
    void convertFreeToAllocated(UInt32 freeAddressUInt32 pagesNumber);
       static 
    void convertAllocatedToFree();
       
    // size of arrays that contains addresses of allocated or free blocks
       
    const static UInt32 ALIGN           0x4;
       const static 
    UInt32 mMemorySize     0x10000;
       const static 
    UInt32 mFreeBlocksSize 0x4000;   

       static const 
    UInt32 BAD_ADDRESS 0x10001;
       static const 
    UInt32 BAD_OFFSET  0x10001;
       
    // main memory that contatins all allocated blocks
       
    static char mMemory[mMemorySize];
       
    // addresses of free blocks in main memory
       
    static int mFreeBlocks[mFreeBlocksSize];
       
    // addresses and sizes of allocated blocks
       
    static CAllocInfo mAllocatedBlocks[mFreeBlocksSize];
    };
    Всем спасибо! Вопрос снят. Достаточн в cpp файле сделать следующее.

    PHP:
    char CMemMgr::mMemory[mMemorySize];
     
    #6563 tim-oleksii, 11 Jul 2011
    Last edited: 11 Jul 2011
  4. rudi

    rudi Active Member

    Joined:
    3 Jun 2010
    Messages:
    492
    Likes Received:
    186
    Reputations:
    5
    tim-oleksii а где cpp
     
  5. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    А что это по-твоему?
     
  6. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    А кто-то встречал исходный код malloc для Windows?
     
  7. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    в CRT можно посмотрeть. нa сколько помню - тaм чeрeз HeapAlloc было.
     
  8. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    Спасибо, гляну.

    Еще такой вопрос.

    Вдруг отвалился у меня srand(time(0));

    Вот еррор мессаг. Кто-то встречался с подобным? Как видите ошибка не у меня в сурсах...

    Error 1 error C2628: 'time_t' followed by 'int' is illegal (did you forget a ';'?) c:\program files\microsoft visual studio 10.0\vc\include\time.h 131 1 mylist
     
  9. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    Вопрос снят. Вчера хидер исправил и сохранил его. Не задерживайтесь на работе.
     
  10. _nic

    _nic Elder - Старейшина

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    Как можно обьявить двумерный массив без new ?
     
  11. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    malloc.

    Или VirtualAlloc, HeapAlloc под вендой.
    Под пингвином - shmget, shmat.

    PHP:
    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
        const 
    int size 2;
        
    int **= (int**) malloc(size sizeof(int*));
        for (
    int i 0;2;++i)
        {
            
    p[i] = (int*)malloc(size sizeof(int));
        }

        for (
    int i 0;size;++i)
        {
            for (
    int j 0;size;++j)
            {
                
    p[i][j] = j;
            }
        }

        for (
    int i 0;size;++i)
        {
            for (
    int j 0;size;++j)
            {
                
    printf("[%i] "p[i][j]);
            }
            
    printf("\n");
        }

        for (
    int i 0;size;i++)
        {
            
    free(p[i]);
        }

        
    free(p);

        return 
    EXIT_SUCCESS;
    }
     
  12. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    судя по теме с васма - он выпилил CRT. так что пускай переопределяет new.
     
  13. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    А вообще можно и без malloc, без new, без API. как раз пишу такую штуку.
     
  14. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Без API системы? В стеке что ли?))
     
  15. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    Стек ограничен. Можно объявить глобальный массив, он как раз размещается в куче.

    Только надо написать менеджер памяти с учетом занятых и свободных узлов.


    added later
    Правда я все равно не понял. Зачем двумерный массив? Это же чистая абстракция.
     
  16. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    А, ну да, как вариант. Стек кстати лучший вариант, самый быстрый, если памяти требуется немного.
     
  17. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    Да, в венде вроде поток занимает 1 метр.

    А кто-то знает, сколько в линухе стек у потока?
     
  18. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Как работать с MySQL в CodeGear RAD Studio 2010 (C++ Builder 2010)?
    Есть какие классы? (ODBC прошу не предлагать).

    Не компилируются файлы, которые идут с оф. пакетом mysql.
     
  19. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    где то читал, что 8 мб.

    mysql++

    ----

    Page 666!
     
    #6579 Ins3t, 15 Jul 2011
    Last edited: 15 Jul 2011
  20. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    Или поставить компоненты MyDAC.
    Zeos тоже ничего.
     
Thread Status:
Not open for further replies.