Вы возвращаете переменную, созданную в стеке. Это неопределенное поведение, так как стек возвращается после возврата функции. Вы должны выделить эту переменную в куче или передать в буфер памяти вашей функции
Я нашел это в сети, и она работает.
Каждый .class 'файл начинается со следующим:
- Магическое число [4 байта]
- Информация о версии [4 байта]
hexdump .class 'файл, скомпилированный с каждой из следующих опций, показывает:
javac -target 1.1
==>CA FE BA BE 00 03 00 2D
javac -target 1.2
==>CA FE BA BE 00 00 00 2E
javac -target 1.3
==>CA FE BA BE 00 00 00 2F
javac -target 1.4
==>CA FE BA BE 00 00 00 30
Возможно, Вы могли использовать эту информацию для записи собственного .class 'утилита проверки версии файла, с помощью Java, или возможно сценариев или языка оболочки ;)!
Я надеюсь, что это помогает.
Anthony Borla
От: http://bytes.com/groups/java/16603-how-determine-java-bytecode-version
Можно использовать javap утилиту, которая идет со стандартным JDK.
javap -verbose MyClass
Compiled from “MyClass.java”
public class MyClass extends java.lang.Object
SourceFile: “MyClass.java”
minor version: 3
major version: 45
Взятый от: http://twit88.com/blog/2008/09/22/java-check-class-version/
try {
String filename = "C:\\MyClass.class";
DataInputStream in = new DataInputStream(new FileInputStream(filename));
int magic = in.readInt();
if (magic != 0xcafebabe) {
log.info(filename + " is not a valid class!");
}
int minor = in.readUnsignedShort();
int major = in.readUnsignedShort();
log.info(filename + ": " + major + " . " + minor);
in.close();
} catch (IOException e) {
log.info("Exception: " + e.getMessage(), e);
}
Можно посмотреть на байтовое смещение 6 и 7 в файле (в шестнадцатеричном дампе, вероятно), который говорит Вам, какая версия используется. Я думаю Байт-код Visualizer (затмите плагин), видьте, которые присваивают версию файлу класса, сделан для.