我认为http://download.java.net/openjdk/jdk6/promoted/b27/openjdk-6-src-b27-26_oct_2012.tar.gz中文件jdk / src / windows / native / java / io / WinNTFileSystem_md.c中的以下功能忽略了释放frompath或topath使用的内存(如果发现其中之一是 ...JNIEXPORT jboolean JNICALLJava_java_io_WinNTFileSystem_rename0(JNIEnv *env, jobject this, jobject from, jobject to){ jboolean rv = JNI_FALSE; WCHAR *frompath = fileToNTPath(env, from, ids.path); WCHAR *topath = fileToNTPath(env, to, ids.path); if (frompath == NULL || topath == NULL) return JNI_FALSE; if (_wrename(frompath, topath) == 0) { rv = JNI_TRUE; } free(frompath); free(topath); return rv;}我想念什么吗?这实际上是一个错误吗?解决:进一步查看io_util_md.c中的函数NULL的详细信息,我可以看到pathToNTPath仅在出现内存不足错误的情况下返回fileToNTPath,所以我想我们不会关心我们是否在JVM崩溃时忽略了释放我们NULL的东西!我认为这仍然应该记录在malloc函数中。 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 我认为原来的观点是正确的。虽然对该代码使用的其他功能的研究确实表明问题可能并不那么重要,但是从内部及其本身来看,缺少此代码。代码审查的一般规则是,如果有人有问题,则通常应在代码中至少带有注释来回答。注释的一般规则是,如果可以用代码表示,则应该这样。如果编写代码来消除此问题,所有这些问题都会消失。 (adsbygoogle = window.adsbygoogle || []).push({});
09-12 03:57