There is no way to tell you that other than just trying to run the code.
The "bitness" just indicate the OS and the architecture that you are targeting, i also want to stress the fact that every OS that support C++ programs has is own implementation of the standard C++ library ( if you are using the std library ) and as coder you are just using headers and namespaces that belongs to the std library and you are relying on the C/C++ library that usually comes with the OS to actually run your code.
I also suggest to rely on the testing part and keep the use of the memory at the minimum, some OS also has some anti-overflow technology or something like that and so some OS can see your massive allocation as a threat for the system stability, an heavy use of the RAM also involves a big role for the memory controller like is normal in an X86 architecture, usually what you are trying to do is not a good thing and ends bad or ends up with a really specific machine and OS as your favorite target for this application that you are trying to create.
Finally, you are trying to write C code not C++ code!
malloc()
is a function from the C world, also involves a direct memory management like direct allocation and de-allocation, you hardware also have to perform a lot, and i mean, a lot of indirections with ~800million structs.
I suggest a switch to a real C++ structure like the std vector ( better than the list for performance ) or just a switch to a language with its own garbage collector and without a direct memory management phase like C# or Java.
The answer to your question is no, also from a pragmatic point of view you will face a big problem about optimizing your code and probably, and i say probably, your life will be easier with a different language like C++ or C# or Java, but keep in mind that usually garbage collectors are memory-hungry, probably the best solution in your case will be the C++ with a little extra effort and testing phase from you.