Встроенная утечка памяти Google v8 с образцом - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь встроить V8, но у меня есть утечки памяти.Следующий минимальный код воспроизводит утечки.

int main(int argc, char* argv[])
{
    // V8 version 7.1.302.33
    v8::V8::InitializeICUDefaultLocation(argv[0]);
    v8::V8::InitializeExternalStartupData(argv[0]);
    std::unique_ptr<v8::Platform> platform = v8::platform::NewDefaultPlatform();
    v8::V8::InitializePlatform(platform.get());
    v8::V8::Initialize();

    v8::Isolate::CreateParams create_params;
    create_params.array_buffer_allocator = v8::ArrayBuffer::Allocator::NewDefaultAllocator();

    v8::Isolate* pIsolate = v8::Isolate::New(create_params); // If I remove this line and the next one, memory leak disappears
    pIsolate->Dispose();

    v8::V8::Dispose();
    v8::V8::ShutdownPlatform();
    delete create_params.array_buffer_allocator;
}

С этим кодом моя Visual Studio 2017 печатает тезисы утечек в выводе

Detected memory leaks!
    Dumping objects ->
{5565} normal block at 0x000001BA6F417950, 8 bytes long.
    Data: < i    > 00 00 E8 69 18 00 00 00
{5564} normal block at 0x000001BA6F416960, 16 bytes long.
    Data : <8 >o > 38 D7 3E 6F BA 01 00 00 00 00 00 00 00 00 00 00
{5563} normal block at 0x000001BA6F3ED720, 56 bytes long.
    Data: <  >o > o > A0 D6 3E 6F BA 01 00 00 A0 D6 3E 6F BA 01 00 00
{989} normal block at 0x000001BA6F4194E0, 128 bytes long.
    Data: <  >o > o > A0 D6 3E 6F BA 01 00 00 A0 D6 3E 6F BA 01 00 00
{988} normal block at 0x000001BA6F416CD0, 16 bytes long.
    Data: < p `             > 70 B4 60 0A FF 7F 00 00 00 00 00 00 00 00 00 00
{987} normal block at 0x000001BA6F417270, 16 bytes long.
    Data : < X `             > 58 B4 60 0A FF 7F 00 00 00 00 00 00 00 00 00 00
{986} normal block at 0x000001BA6F3ED6A0, 56 bytes long.
    Data : <  >o > o > 20 D7 3E 6F BA 01 00 00 20 D7 3E 6F BA 01 00 00
    Object dump complete.

Так вы знаете, что я забыл?

Заранее спасибо за помощь;)

1 Ответ

0 голосов
/ 13 июня 2019

Я скопировал ваш код и запустил его в среде linux, с установленным -fsanitize = address flag, ошибки утечки памяти не было.

...