`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
gin_helper::ErrorThrower thrower,
    v8::Local<v8::Value> buffer,
    gin::Arguments* args) {
  if (!node::Buffer::HasInstance(buffer)) {
    thrower.ThrowError("buffer must be a node Buffer");
    return gin::Handle<NativeImage>();
  }
  int width = 0;
  int height = 0;
  double scale_factor = 1.;
  gin_helper::Dictionary options;
  if (args->GetNext(&options)) {
    options.Get("width", &width);
    options.Get("height", &height);
    options.Get("scaleFactor", &scale_factor);
  }
  gfx::ImageSkia image_skia;
  electron::util::AddImageSkiaRepFromBuffer(
      &image_skia, reinterpret_cast<unsigned char*>(node::Buffer::Data(buffer)),
      node::Buffer::Length(buffer), width, height, scale_factor);
  return Create(args->isolate(), gfx::Image(image_skia));
}
/
gin::Handle<NativeImage> NativeImage::CreateFromDataURL(v8::Isolate* isolate,