Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.fds-net.ru/showflat.php?Number=5618179&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Tue Apr 12 13:29:25 2016
Кодировка: Windows-1251
Как узнать вышел ли указатель за пределы массива - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Development (Archive)

Страницы: 0 | 20 | показать все
Krasin

Рег.: 23.06.2004
Сообщений: 7039
Из: Калифорния
Рейтинг: 3386
  Re: Как узнать вышел ли указатель за пределы массива [re: Ighn]
      03.01.2007 18:53
 

Посмотри в настройках проекта. Гарантий дать не могу (дело было давно, а дельфи сейчас не стоит, проверить не могу), но вроде бы там было где-то место, где можно указать стандартное выравнивание массивов в памяти.

Ighn
Helix pomatia

Рег.: 15.06.2005
Сообщений: 383
Из: Москва
Рейтинг: -10
  Re: Как узнать вышел ли указатель за пределы массива [re: Krasin]
      03.01.2007 19:03
 

Есть Project->Options->Compiler->Record field alignment. Там есть следующие значения:
1,2,4,8. 16 нету.
Есть еще директива компилятора {$A+}. Из описания не видно, чтобы она помогала выравнивать по 16 байт.



Incertus animus dimidium sapientiae est - Сомнение - половина мудрости
Krasin

Рег.: 23.06.2004
Сообщений: 7039
Из: Калифорния
Рейтинг: 3386
  Re: Как узнать вышел ли указатель за пределы массива [re: Ighn]
      03.01.2007 19:04
 

Тут уже помочь не смогу, последний раз с Дельфи работал больше трех лет назад.

DarkGrayМодератор
Carpal Tunnel

Рег.: 30.09.2002
Сообщений: 31411
Рейтинг: 8952
  Re: Как узнать вышел ли указатель за пределы массива [re: Ighn]
      03.01.2007 19:06
 

выделяй память в heap-е и выравнивай сам.

Basilio
GreenOne

Рег.: 14.10.2002
Сообщений: 13749
Из: Москва
Рейтинг: 3476
  Re: Как узнать вышел ли указатель за пределы массива [re: Ighn]
      06.01.2007 00:21
 

{$ALIGN 16} не работает?
в доках правда разрешено только 1,2,4,8
я не разбираюсь в SSE/2 и т.п.. нафига использовать сингл для арифметики? SSE использует 4-байтовый float?



Ighn
Helix pomatia

Рег.: 15.06.2005
Сообщений: 383
Из: Москва
Рейтинг: -10
  Re: Как узнать вышел ли указатель за пределы массива [re: Basilio]
      06.01.2007 07:04
 

В ответ на:

{$ALIGN 16}


Не работает.
[quote]SSE использует 4-байтовый float?[quote]
Да.
Преимущество в параллельности обработки данных. SSE позволяет производить одновременно операции над 4-мя парами чисел.
Реальная польза:
http://forum.b.gz.ru/showflat.php?Cat=&Board=prog&Nu...



Incertus animus dimidium sapientiae est - Сомнение - половина мудрости
Ighn
Helix pomatia

Рег.: 15.06.2005
Сообщений: 383
Из: Москва
Рейтинг: -10
  Re: Как узнать вышел ли указатель за пределы массива [re: DarkGray]
      06.01.2007 07:06
 

В ответ на:

выделяй память в heap-е и выравнивай сам.



Может примерчик, работающий в Delphi, подкинешь? Самый простой. Буду очень признателен.



Incertus animus dimidium sapientiae est - Сомнение - половина мудрости
DarkGrayМодератор
Carpal Tunnel

Рег.: 30.09.2002
Сообщений: 31411
Рейтинг: 8952
  Re: Как узнать вышел ли указатель за пределы массива [re: Ighn]
      06.01.2007 07:58
 

выделяем выравненные куски + прячем от остального кода работу по выравниванию (решение в лоб)

code:
byte* AllocAlign16(int size) { byte * p = new byte[size + 17]; byte *p16 = p + 16 - ((int)p)%16; //выравниваем (p16-1)^ = p16-p; //запоминаем сдвиг, чтобы потом можно было восстановить истинный указатель на блок return p16; } void FreeAlign16(byte *p) { byte * oldP = p - (p-1)^; delete oldP; }


Ighn
Helix pomatia

Рег.: 15.06.2005
Сообщений: 383
Из: Москва
Рейтинг: -10
  Re: Как узнать вышел ли указатель за пределы массива [re: DarkGray]
      06.01.2007 08:55
 


 
В ответ на:

...примерчик, работающий в Delphi






Incertus animus dimidium sapientiae est - Сомнение - половина мудрости
DarkGrayМодератор
Carpal Tunnel

Рег.: 30.09.2002
Сообщений: 31411
Рейтинг: 8952
  Re: Как узнать вышел ли указатель за пределы массива [re: Ighn]
      06.01.2007 14:57
 

что не получается, когда пытаешься сделать этот пример компилируемым?

ps
вместо % должна быть функция Mod
и выделение освобождение byte-ого массива может чуть по другому записывается.

Ighn
Helix pomatia

Рег.: 15.06.2005
Сообщений: 383
Из: Москва
Рейтинг: -10
  Re: Как узнать вышел ли указатель за пределы массива [re: DarkGray]
      07.01.2007 02:01
 

Спасибо, попробую.



Incertus animus dimidium sapientiae est - Сомнение - половина мудрости
Страницы: 0 | 20 | показать все

Technical >> Development (Archive)

Дополнительная информация
0 зарегистрированных и 0 анонимных пользователей просматривают этот форум.

Модераторы:  DarkGray 

Печать темы

Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в