Перемещение указателя. BYTE* Buff ... Buff++ ...

Тема в разделе "LANGS.C", создана пользователем GHook, 18 фев 2009.

  1. GHook

    GHook New Member

    Публикаций:
    0
    Регистрация:
    25 янв 2009
    Сообщения:
    9
    VS2005, CPP

    *Сильно ногами не бить!!!

    Можно ли перемещать указатель таким образом:
    BYTE* Data = new BYTE[512];
    BYTE* sData = Data;
    sData+=2; фактически получаем Data[2]


    Пример, выбделить память:
    Код (Text):
    1. BYTE* Buff = new BYTE[ANY_SIZE];
    Дублировать указатель:
    Код (Text):
    1. BYTE* sBuff = Buff;
    Читаем из файла с перемещением указателя..
    Код (Text):
    1. CFile mFile;
    2. int count=0;
    3. long breaded=0;
    4. ...
    5. count = mFile.Read(sBuff,64);
    6. if(count<=0 || breaded>ANY_SIZE)break;
    7. sBuff+=count;
    8. ...
    Какие могут быть камни?
    Выделяемая память всегда "прямая"?
     
  2. s0larian

    s0larian New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    489
    Адрес:
    Крыжёпполь
    Так а в чём вопрос?

    Код (Text):
    1. char *p1 = new char[20];
    2. char *p2 = p1;
    обе переменные (указатели) имеют одинаковое значение и показывают на тот выделенный в heap буфер.

    Код (Text):
    1. char buff[200];
    2.  
    3. for (;;)
    4. {
    5.     uint32 rsize = file.Read(buff, sizeof(buff));
    6.  
    7.     if (rsize > 0)
    8.         std::cout << "Read " << rsize << " bytes\n";
    9.  
    10.     if (rsize < sizeof(buff))
    11.         break;
    12. }
    Чтение в массив на stack.
     
  3. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    ну там галька, гранит еще в почках камни бывают.
    не она всегда оперативная.
     
  4. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    Может возникнуть проблема при restrict указателях.