¿Qué pasa si el contador supera la memoria asignada por malloc o calloc

Uso el siguiente comando en C para asignar 80 bytes (en un sistema de 64 bits) a d.

double *d = calloc(10, sizeof(double)); 

Y usando el siguiente bucle para inicializar d

 for (k=0;k<11;k++){ d[k] = k; } 

Cuando ejecuto el progtwig, no hay error. pero creo que dado que el límite superior de k es 11 , debería haber un error, ya que d es un arreglo de longitud 10. Por favor, hágame saber por qué el progtwig se ejecuta sin error. Gracias por adelantado.

Este es un comportamiento indefinido . Puede haber un error, y puede ser ignorado silenciosamente por el sistema operativo, cuando se rompen las reglas, todas las apuestas están desactivadas.

Lo que realmente sucede en el código depende del sistema operativo, el comstackdor y la architecture en la que lo ejecute, lo que podría ser tolerante a esta violación, fallar o hacer otra cosa, el punto es que el comportamiento resultante no está definido.

Creo que C y C ++ no realizan comprobaciones de límites con matrices y punteros, siempre que estén en la stack del progtwig. Creo que produce un error de segmentación cuando el acceso está fuera de la stack del progtwig.