`nativeImage.getBitmap()` allows accessing raw memory after it is freed.

```js
const { nativeImage } = require('electron')

const img = nativeImage.createFromDataURL('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYlWNgAAIAAAUAAdafFs0AAAAASUVORK5CYII=')
const bitmap = img.getBitmap()
console.log(bitmap)
setTimeout(() => {
  gc()
  console.log(bitmap)
}, 1000)
```

The above example produces the following output on my machine:

```
<Buffer 00 00 00 00>
<Buffer 50 b8 41 05>
```

The 2nd log is just an arbitrary chunk of memory. It's random each time I run the program.
shell/common/api/electron_api_native_image.cc
v8::Isolate* isolate,
    v8::Local<v8::Value> val,
    electron::api::NativeImage** out) {
  /
  base::FilePath path;
  if (ConvertFromV8(isolate, val, &path)) {
    *out = electron::api::NativeImage::CreateFromPath(isolate, path).get();
    if ((*out)->image().IsEmpty()) {
#if defined(OS_WIN)
      const auto img_path = base::UTF16ToUTF8(path.value());
#else
      const auto img_path = path.value();
#endif
      isolate->ThrowException(v8::Exception::Error(
          StringToV8(isolate, "Image could not be created from " + img_path)));
      return false;
    }
    return true;
  }
  /
  /
  *out = static_cast<electron::api::NativeImage*>(
      static_cast<gin::WrappableBase*>(gin::internal::FromV8Impl(
          isolate, val, &electron::api::NativeImage::kWrapperInfo)));
  return *out != nullptr;
}
}  /
namespace {
using electron::api::NativeImage;
void Initialize(v8::Local<v8::Object> exports,