You can use the GlobalMemoryStatus function to determine how much memory your application can allocate without severely impacting other applications.
The information returned by the GlobalMemoryStatus function is volatile. There is no guarantee that two sequential calls to this function will return the same information.