Страница 2 из 2

Добавлено: 27 май 2004, 08:30
Конструктор
nucer, не слышал про far указатели?
И что? Сегмент все равно 64 кб. Независимо от того какой указатель дос все равно может адресовать в пределах указанного сегмента. far указатель может просто разрешить использовать памяти более 64 кб, так как будет распихивать все по разным сегментам, а блоком >64кб прочитать все равно не получится.

Единственное средство которое я знаю это DPMI расширители доса, но это почти не дос уже.

Добавлено: 27 май 2004, 10:42
Romeo
Конструктор, человек читает посимвольно, а не блоком (см. код выше).

Добавлено: 27 май 2004, 16:19
Конструктор
Romeo, мне думается все равно не должно пахать.

Вот видим:


char *DATA = new char[L];


Разве он (dos) сможет выделить > 64 кб?
По идее он даст 64кб - 16 байт максимум.

Потом мы например читаем

DATA = fgetc( HNDL );

и если i у нас больше чем 64кб то тогда при вычислении адреса
будет переполнение, т.е. адрес вылезет за пределы сегмента.

Сомнительно, чтобы компиль разгадывал такое. Это же не бейсик.

Или far pointer'ы работают не как обычные поинтеры?

Жалко Borland 3.1 нет под рукой. :(

Добавлено: 06 июн 2004, 20:08
Zm
Короче, надо програмить под винду с использованием 64 разрядной адресации и переменных типа __int64, функций fgetpos и fsetpos, которые в 7-ой студии с 64 разр. переменными работают

Добавлено: 09 июн 2004, 18:37
wtom
fputc( fgetc( HNDL ) , NEW );