Cấp phát động trong C

Em chào anh chị
Em vừa mới học về cấp phát bộ nhớ trong c, có một số chỗ chưa hiểu rất mong được anh chị giải đáp ạ.
Em có 1 chương trình như này:

#include<stdio.h>
#include<stdlib.h>
int main(){
	int* p ;
	p = (int*)malloc(5 * sizeof(int));
	for(int i = 0; i < 15; i++) {
		p[i] = i;
		printf("%d ", p[i]);
	}
	
	return 0;
}

Em không hiểu chỗ sao em cấp phát 5 ô nhớ để lưu trữ 5 số nguyên, nhưng trong vòng for kia em đã lưu trữ được 15 số và chương trình vẫn chạy bình thường không thấy báo lỗi gì ạ!

Có cách nào để em cấp phát n ô nhớ và khi em nhập quá n ô nhớ đó thì chương trình bị lỗi or báo lỗi ngay không ạ.

Em cảm ơn anh chị.

em dùng valgrind để chạy chương trình là nó báo lỗi :V

3 Likes

Em cảm ơn a, để em thử.

hay em xài VS compileo ở chế độ Debug rồi chạy nó cũng báo lỗi :thinking:

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?