NewStringUTF ()
создает новую строку java.lang.String - другими словами, объект в куче Java, который будет собран, когда появится больше нет ссылок на него.
Или вы спрашиваете о otherString
? Я не знаю, что делает FormatMessage
, но похоже, что он выделяет память в куче C. Если это так, то да, вы должны явно освободить эту память.
Вы усложняете себе жизнь, иногда устанавливая otherString
как постоянную строку. Не делай этого. Вместо этого вызовите NewStringUTF ()
в блоках вашего if / else, а во втором случае освободите родную строку C.
Вам не нужно беспокоиться о памяти, выделенной NewStringUTF, так как об этом позаботится сборщик мусора Java.
Но вы должны освободить lpMsgBuf при передаче FORMAT_MESSAGE_ALLOCATE_BUFFER в FormatMessage (т.е. вы должны использовать LocalFree для освобождения этого буфера), см. Документацию FormatMessage .