C++: switch types leak memory
It turns out that current compiler generates the following code, for example, for [switch_manual_int](https://github.com/kaitai-io/kaitai_struct_tests/blob/master/formats/switch_manual_int.ksy):

```cpp
switch_manual_int_t::opcode_t::opcode_t(kaitai::kstream *p_io, switch_manual_int_t* p_parent, switch_manual_int_t *p_root) : kaitai::kstruct(p_io) {
    m__parent = p_parent;
    m__root = p_root;
    _read();
}

void switch_manual_int_t::opcode_t::_read() {
    m_code = m__io->read_u1();
    switch (code()) {
    case 73:
        m_body = new intval_t(m__io, this, m__root);
        break;
    case 83:
        m_body = new strval_t(m__io, this, m__root);
        break;
    }
}

switch_manual_int_t::opcode_t::~opcode_t() {
}
```

That is, `m_body` is:

* Not initialized properly (there should be `m_body = 0` initializer in the constructor)
* Not deleted properly (there should be some conditional `delete` in the destructor)

What's the worst, `valgrind-cpp_stl` seems to be totally silent about all this.