I know that debug-mode-built apps have debugging information and i think that's not all, are there any more differences between them?
I have a DLL, which exports 3 functions, when DLLmain called, i call function 1, in function 1 i use the addresses of function 2 and 3. In order to test this DLL, i created a application which calls LoadLibrary() to load my dll, it only worked when i build it in debug mode, only function 1 worked in release mode, i don't know why.
Please help me if you know, thanks.
As you've mentioned DLLs, I'll assume you're using Windows. As for differences between debug and release:
1. Release defined NDEBUG which swithes off asserts (a C standard).
2. Windows adds DEBUG and _DEBUG to do the same thing for MFC.
3. Debug builds use a debug heap that provides guard blocks and functions for verifying heap consistency/validity.
4. Release builds tend to switch on optimisation where as debug builds tend not to.
5. Debug builds build with symbolic debugging info. Release builds tend not to for smaller builds, also the symbolc information can assist reverse engineering.
6. Debug builds link to debug runtime libraries that are compiled as above.