This
errno value, meaning "Cannot allocate memory", may be confusing to many people who are not very
familiar with recent
Unix virtual memory systems' workings. What it usually means is that you are attempting to overstep your bounds (
resource limits) set on your
process. Because modern
Unix systems quite often do
swap overcommit, you would not actually get an ENOMEM if your system were truly out of
memory. But, if you have a limited
heap size, for instance, once you reached this
limit,
malloc would start returning ENOMEM errors.
See ENOBUFS for network-related memory shortages