Como solo conozco aspectos internos de Linux, intentaré darte una respuesta en esta plataforma. El programa llama a calloc que solicita al sistema operativo que asigne una porción de memoria a su espacio de direcciones. El núcleo, a su vez, asignará inmediatamente la nueva memoria al espacio de direcciones del proceso. Sin embargo, esta es una memoria sobre comprometida, en realidad no está allí. Algunos creen que este es un error horrible en la arquitectura de Linux, algunos creen que es una característica. Sin embargo, puede activarse / desactivarse utilizando vm.overcommit_memory sysctl.
De todos modos, para estar en el tema: el sistema operativo decidirá cómo se manejará esa memoria (¡también puede mentir al respecto!). Por lo tanto, más adelante puede ocurrir un intercambio, si la memoria disponible no es suficiente. En su caso, los 8 GB probablemente estaban disponibles y el núcleo no tuvo que intercambiarse más adelante. No revisé el algoritmo, pero si se usa todo el 8GB, entonces este fue ciertamente el caso. Como la asignación de memoria se realiza simplemente modificando algunas variables internas del kernel, es muy rápido si no es necesario realizar operaciones adicionales (intercambio).
- Cómo imprimir espacio para los elementos de la matriz
- Cómo construir robots enjambre
- Normalmente me canso después de resolver 2 - 3 problemas algorítmicos en Leet Code. ¿Qué debo hacer para resolver más problemas diariamente?
- ¿Existe algún algoritmo simple que pueda resolver la programación del taller?
- ¿Cuáles son los actos que se consideran hacer trampa durante un desafío de contratación en Interviewstreet?