Использование VMProtectFreeString

Подскажите пример использования VMProtectFreeString, что-то не могу разобраться.

const char *str = VMProtectDecryptStringA("test");
...
VMProtectFreeString(str);



#include <windows.h>
#include "VMProtectSDK.h"
int main(int argc, char *argv[]){	
   VMProtectBegin("marker1");
   const char *str = VMProtectDecryptStringA("test");
   VMProtectFreeString(str);
   VMProtectEnd();  
   return 1;
}



test.cpp: In function ‘int main(int, char**)’:
test.cpp:7: error: invalid conversion from ‘const void*’ to ‘void*’
test.cpp:7: error: initializing argument 1 of ‘BOOL VMProtectFreeString(void*)’

#include <windows.h>
#include "VMProtectSDK.h"
int main(int argc, char *argv[]){   
   VMProtectBegin("marker1");
   char *str = VMProtectDecryptStringA("test");
   VMProtectFreeString((void *)str);
   VMProtectEnd(); 
   return 1;
}

В следующей версии мы изменим тип параметра у VMProtectFreeString с “void *” на “const void *” чтобы не делать преобразование типов.

Точно. Спасибо за оперативный ответ.

VMProtectFreeString - данная процедура очищает то, что я передаю или нет?

т.е. нужно ли мне делать еще один free(str) ?

Я пытаюсь избавиться от утечки в таком элементарном примере. drmemory.exe вот что говорит

DUPLICATE ERROR COUNTS:
Error # 1: 17
Error # 4: 2

SUPPRESSIONS USED:

ERRORS FOUND:
0 unique, 0 total unaddressable access(es)
1 unique, 17 total uninitialized access(es)
0 unique, 0 total invalid heap argument(s)
0 unique, 0 total GDI usage error(s)
0 unique, 0 total warning(s)
2 unique, 3 total, 503 byte(s) of leak(s)
1 unique, 1 total, 23 byte(s) of possible leak(s)
ERRORS IGNORED:
11 unique, 65 total, 8206 byte(s) of still-reachable allocation(s)

VMProtectFreeString - данная процедура очищает то, что я передаю или нет?

Да, очищает то что вы передаете.

т.е. нужно ли мне делать еще один free(str) ?

Не нужно!

Я пытаюсь избавиться от утечки в таком элементарном примере. drmemory.exe вот что говорит

При старте защищенной программы рантайм вмпротекта создает в памяти собственные объекты, поэтому на момент завершения процесса у вас всегда будет видна занятая память.