Hỏi về tràn bộ nhớ

anh chị cho hỏi với tại sao khi cấp phát bộ nhớ là 2 nhưng khi nhập giá trị và in ra 10 giá trị thì vẫn bình thường, không bao lỗi hay tràn bộ nhớ.

#include<stdlib.h>
#include<stdio.h>
int main()
{
          int *c;
          c = (int*)calloc(2,sizeof(int));
          for(int i =0; i<10; i++)
          scanf("%d",c+i);
          for(int i =0; i<10; i++)
          printf("%d",*c+i);
}

Nhà mua 2 lốt đất nhưng xây nhà trên cái lot đất gần đấy. Hên xui đó là đất hoang chưa có chủ chứ có chủ là nó táng sml :slight_smile: .

3 Likes

Giải thích rõ hơn tí
Mình có 2m đất để xây nhà, nhưng xây nhà 10m vẫn được, lố 8m thôi
Nhưng có vài trường hợp có thể xảy ra với 8m kia

  1. 8m kia là đất hoang chưa ai sử dụng tại thời điểm mình lấy xây nhà, nên lúc đó cũng chưa có gì xảy ra
  2. 8m kia đã có người sử dụng ([người khác/ứng dụng khác] hoặc [chính mình/ứng dụng của mình]) khi đó công trình đã có sẽ bị đập phá để xây cái mình xây dẫn tới việc ứng dụng khác hoặc của chính mình bị chạy sai hoặc lỗi
  3. Cũng là đất trống nhưng trên giấy tờ mình khai có 2m,sau này nhà nước cấp phép cho thằng khác sử dụng 8m kia thì nó đập của mình hoặc chính mình đập của mình (vì chính quyền chỉ biết có cái nhà 2m trên giấy tờ, khi ai đó (cũng có thể là chính bản thân mình) xin cấp đất xây chuồng heo chẳn hạn thì cấp từ chỗ tiếp theo của 2m đó, phần đất xin cấp đó trùng với phần bạn xây lỗ không có trong giấy tờ, nên nhà bị đập phần ko giấy tờ đó
4 Likes

Công nhận nói về cấp phát bộ nhớ trong C/C++ thì cứ lấy quyền sử dụng đất đai ra minh họa là trên cả tuyệt vời :joy:

4 Likes

Cái kém của việc dạy học ở VN chính là dạy toàn lý thuyết suông nên dẫn tới việc chỉ có học và làm bài tập mà thôi, còn hiểu hay không thì hên xui

4 Likes

dễ hiểu thật :rofl::rofl::rofl::rofl:

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