Just a stab in the dark, but are you allocating something and putting it in 'System' before you pass 'System' to FMOD::System_Create()? If so, then don't (that would cause a memory leak).
A few miscellanea:
*Don't ZeroMemory() the pointer. That's just silly.
*As was indicated, if you set the pointer to null and then delete it, you should be getting a segfault. Don't do that. (There's no reason to do either of those things. FMOD will free the memory it allocated when you call System->release().)
*No offense, but why does this class exist? All it appears to do is act as more-or-less a direct pass-thru for the FMOD system interface.
Please read the documentation that came with FMOD about how to start up the system correctly. It's on page 8 of "Getting started with FMOD for Windows.pdf".
Please research the RAII design pattern. Mastering RAII is the 'correct' way to avoid memory leaks in C++, and it also helps with things like exception safety and even makes it easier and more natural-feeling to use your objects!