When Windows 64-bit applications crash after recompiling in 13.x
This can be due to a change made in the default base address of all EXEs DLLs and Packages.
The default base address in older versions of the IDE was 0x400000, for both 32- and 64-bit binaries, this was changed in the newer IDE to 0x140000000.
The reason for the change was that it enables better high entropy ASLR support and to be incompliance with the MS safety recommendations.
An easy test to see if a crash is due to this change is by changing your application's base address back to the old value, and if does NOT crash, then it means that you probably made some assumptions about a pointer's width somewhere, in the code.
So where in the past developers wrote code assuming pointers to DWORDs this assumption is not valid anymore, and these issues will now show up because the binary is loaded very high in memory.
If DWORD was used only the lower 32-bits will be valid, and higher 32-bits will be truncated/zeroed, hence the address passed in will not be a valid address. It should now be clear why it works when the binary image is loaded lower in memory as the higher 32-bits become irrelevant, as it will be zero at lower memory locations and DWORD pointers will work, most times.
In Win64 code you SHOULD use IntPtr's they will translate between Win32 and Win64.