【发布时间】:2018-12-08 17:36:05
【问题描述】:
我想知道是否有人确切知道temp 数组在以下 Java Card 方法中存储的位置(EEPROM 或 RAM)(我在 JCIDE 示例目录中找到了 WalletDemoApplet 的部分源代码)。请注意,数组不是通过 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 Developer's Guide,您可以找到:
转换器确保为静态字段的内容分配内存,即原始数据类型 以及对数组的引用。使用系统堆中的新字节码为实例分配内存 并且不能被回收(除非智能卡实现了垃圾收集器)。方法记忆 变量、局部变量和参数从堆栈中分配,并在方法返回时回收。
【问题讨论】:
-
在我们发言时,JavaCardOS 的优秀人士正在观看该演示;可能还有其他错误(我发送了 Q/A 的链接)...