The upcoming project I'm going to be working on may require large-scale memory management and operations on large amounts of data on hard disks.
I'm not clear on a number of generally related topics.
- How much memory can one safely allocate within a program, both at a time and in total?
- How can you tell if a specific address is mapped to the swap file?
- If I'm dynamically allocating a *lot* of memory with 'new', does that mean that I have to increase the heap size linker option?
- What is the most efficient way to access a file? What size of a file is it safe to completely read and load into memory, operate, and then save?
- If reading a file in separate blocks, what is the optimum block size to use?
If an answer relies on the operating system/hardware, assume generic Windows, 64 to 128 mb of memory, and a Pentium processor.
Thanks for your help! ...And although I'm fully aware of the fact that there are probably volumes upon volumes written on this, I don't have access to a technical library (although references to a good comprehensive website may be helpful).