case k_A:
jstring a = "....";
break;
case k_B:
jstring b = "....";
break;
case k_C:
jstring c = ".....";
break;
case k_D:
jstring d = ".....";
break;
default:
jstring dflt = ".....";
在我的案例中,实际上有200个案例陈述。虽然一次只执行一个case语句,但是否为切换块中的所有201语句分配了内存?如果是,建议使用此方法吗?
最佳答案
字符串文字都静态存在。您认为它们从哪里神奇出现?在这种情况下,它是C,因此它们都存在于您的数据段中。
如果您的case值相邻,则可能应该使用查找数组而不是switch语句
但是,您的代码还有其他问题。 C文字不是jstrings。您需要调用NewStringUTF()。
关于java - 内存是否分配给交换块中的所有字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10949618/