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/

10-12 04:24