x64 operator new []
От: roman313  
Дата: 15.10.10 09:02
Оценка:
Hi!

есть проблема в построении 64-битного приложения —
не могу использовать operator new [] с размером более 0x7fffffff


к примеру, BYTE *p = new BYTE [0x1FFFFFFFF];

приводит к ошибке:
Ошибка 1 error C2148: общий размер массива не должен превышать 0x7fffffff байт D:\Роман В Автухов\Visual Studio\Проекты\00\00\00.cpp 25


Если использовать функции Heap... то OK.

Как обойти ограничение operator new ?

определяется он как void* operator new [] (size_t),
и в 64-битном режиме size_t == __int64, но код все равно не прокатывает.

Может, чисто ошибка компилятора Microsoft VC++ 2010?
Re: x64 operator new []
От: cvetkov  
Дата: 15.10.10 10:11
Оценка: 1 (1)
Здравствуйте, roman313, Вы писали:

R>Как обойти ограничение operator new ?


Завести переменную?
... << RSDN@Home 1.2.0 alpha 4 rev. 1227>>
Re: x64 operator new []
От: Analytic2007 Россия https://www.viva64.com/ru/pvs-studio/
Дата: 15.10.10 11:20
Оценка:
R>Может, чисто ошибка компилятора Microsoft VC++ 2010?

Ошибка компилятора. Забыли, что в x64 уже так можно.
Re: x64 operator new []
От: AleksandrN Россия  
Дата: 15.10.10 13:05
Оценка:
Здравствуйте, roman313, Вы писали:

R>Как обойти ограничение operator new ?


В данном случае можно malloc использовать.
Re: x64 operator new []
От: roman313  
Дата: 15.10.10 13:25
Оценка:
Да, через переменную __int64
все работает нормально

__int64 x = 0x2FFFFFFFF;

BYTE *p = new BYTE [x];

OK
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.