Large Address Aware in Outlook 2016
This blog is about Large Address Aware in Outlook 2016. You might have heard of a recent update of Microsoft Outlook 2016 (LAA) that increased the memory available for Outlook from 2GB to 4GB. We’ve started receiving questions about how to deal with it. This blog is an answer.
As you may know a 32bit Windows application is limited to 2Gb RAM; see Memory Limits for Windows and Windows Server Releases. Recently Microsoft announced that starting from build 16.0.8528.2147 (Version 1709) the 32bit version of Outlook 2016 is now Large Address Aware. As per Microsoft only 32bit versions of Outlook 2016 running on a 64bit version of Windows may be affected.
This can affect you if your code relies on pointers restricted to 2Gb. An example of a pointer and a way to obtain it would be the IntPtr value returned by the GetProcessAddress() Window API call. Naturally, other Windows API calls may produce similar values. What’s common in such calls is that they produce addresses.
Extending the address range available in your program creates a problem only if you deal with a representation of the address, not with the pointer itself.
Potentially dangerous are operations that cast IntPtr to and from In32 (int in C# and Integer in VB.NET). We suggest to always cast to and from Int64! This is always – I strongly believe so – the case in the code of Add-in Express.