Интересно, кто-нибудь точно знает, где хранится массив temp
(EEPROM или RAM) в следующем методе Java Card (часть исходного кода WalletDemoApplet, который я нашел в каталоге примеров JCIDE).Обратите внимание, что массив не выделяется с помощью makeTransientByteArray.Также он объявлен как локальная переменная внутри метода.
private void calIntegral(byte [] buf,byte soff,short len)
{
byte temp[]={0x00,0x00,0x00,0x00};
short low=0;
byte aa=0;
if (len==2)
Util.arrayCopy(buf, soff, temp,(short)2, len);
else
Util.arrayCopy(buf, soff, temp,(short)0, len);
...
}
Кроме того, в Руководстве разработчика по Java Card Applet вы можете найти:
Конвертер обеспечивает выделение памяти для содержимого статических полей, а именно для примитивных типов данных и ссылок на массивы.Память выделяется для экземпляров с использованием нового байт-кода из системной кучи и не может быть возвращена (если на смарт-карте не реализован сборщик мусора).Память для переменных, локальных переменных и параметров метода выделяется из стека и освобождается при возврате метода.