#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SUP 33799
int main()
{
int *cad = NULL;
int i;
cad = malloc(sizeof(int) * 2);
for (i = 0; i < SUP; i++) {
cad[i] = i;
printf("%d ", cad[i]);
}
printf("\n");
return EXIT_SUCCESS;
}
Si SUP es, por ejemplo, 20, no hay Segment fault. Si le doy un valor, por ejemplo, 33799 lanza este error al ejecutar el programa.
¿Por qué no da error de segmento a partir de cad[2]?
Gracias de antemano
El buffer es un poco pequeño para algo tan grande,no? :rolleyes:
Por casualidad ... en algun momento llegaras a memoria invalida ... calcula que cada pagina de memoria suele ocupar 4096 bytes. En sintesis C/C++ te permite acceder a cualquier direccion aunque este fuera de los limites logicos de tu reserva de memoria, no lo hagas.
Vale, por lo que me dices, entiendo que el sistema operativo detecta el fallo de segmento cuando te sales del rango de direcciones que te asigna, ¿verdad?
Creo que voy a tener que leer más sobre el heap...