루프의 배열 요소에 액세스하려고하면 세그먼트 오류가 발생합니다. 이유는 무엇입니까?

각 좌표에 1 또는 0이 무작위로 할당 된 2 차원 배열을 만들려고합니다. 좌표 [20] [3]에 도달 할 때까지 잘 작동합니다. 그 후 "세그먼트 오류 11"이 발생합니다.

나는 어떻게, 왜 그런지 전혀 단서가 없다. 특히 예를 들어 200 * 200으로 행렬을 만들 수 있기 때문에 [200] [3] 좌표에서만 여전히 같은 문제가 발생합니다. 따라서 오류가 발생한 마지막 x 좌표에서 항상 세 번째 y 좌표입니다.

#include <stdio.h>
#include <stdlib.h>

int main() {

  int x, y, i, j ;
  x = 20;
  y = 20;

  int grid [x][y];

  for ( i = 0; i <= x; i++) {
    for ( j = 0; j <= y; j++) {

      grid[i][j] = rand() % 2 ;

      printf("grid [%d][%d]: %d\n", i, j, grid[i][j]);

    }
  }
  return 0;
}
Sourav Ghosh

C는 배열에 0 기반 인덱싱을 사용합니다. 따라서 다음과 같이 정의 된 배열의 경우

int grid [x][y]

루핑

 for ( i = 0; i <= x; i++) 
   for ( j = 0; j <= y; j++)

경우 오프별로 하나 . ( 부분 참고<= ).

자세히 설명하기 위해 차원 배열에 p대해 유효한 인덱스는 0to p-1입니다.

당신은 당신의 루프 조건을 변경해야 i < x하고 j < y경계를 withing에 숙박 할 수 있습니다. 경계를 벗어난 메모리에 액세스하면 정의되지 않은 동작이 발생 합니다.

즉,

  • int main()해야한다 int main(void), 적어도, 호스팅 환경을위한 C 표준을 준수합니다.
  • grid여기서 VLA 로 만들 필요가 없습니다 . 차원이 이미 알려진 경우 더 나은 방법은 컴파일 시간 상수 ( #define)를 사용하여 배열 차원을 생성하는 것입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

구조체의 문자열에 액세스하려고하면 세그먼트 오류가 발생합니다.

분류에서Dev

배열을 함수에 전달하면 세그먼트 오류가 발생합니다 (코어 덤프 됨).

분류에서Dev

내 C 대기열에서 세그먼트 화 오류 (코어 덤프)가 발생하는 이유는 무엇입니까?

분류에서Dev

C ++ Linux : 클래스에서 배열을 선언하면 세그먼트 오류가 발생합니다.

분류에서Dev

2D 배열을 사용할 때 프로그램에서 세그먼트 화 오류 (코어 덤프) 오류가 발생하는 이유는 무엇입니까?

분류에서Dev

배열 프로그램에서 스택 스매싱 오류가 발생하는 이유는 무엇입니까?

분류에서Dev

null 유형 값의 배열 오프셋에 액세스하려고합니다.

분류에서Dev

코드 결과에 세그먼트 오류 (코어 덤프)가 표시되는 이유는 무엇입니까?

분류에서Dev

JavaScript 배열의 요소에 액세스 할 때 오류를 피하는 방법은 무엇입니까?

분류에서Dev

mySQL 오류 'null 유형의 값에서 배열 오프셋에 액세스하려고합니다'

분류에서Dev

코드 세그먼트의 주소가 0 인 이유는 무엇입니까?

분류에서Dev

다른 컨트롤러의 세션 데이터에 액세스하면 오류가 발생합니다.

분류에서Dev

배열을 프록시하고 map 함수에 액세스 할 때 배열의 생성자가 확인되는 이유는 무엇입니까?

분류에서Dev

"세그먼트 오류 (코어 덤프)"오류가 발생하는 이유를 이해할 수 없습니다.

분류에서Dev

코드에서 세그먼트 화 오류 (코어 덤프)가 발생하는 이유를 이해하는 데 어려움이 있습니다.

분류에서Dev

Facebook oauth가 https 사이트의 http 버전에 액세스하려고하는 이유는 무엇입니까?

분류에서Dev

numpy 배열의 요소를 반복하고 액세스하는 가장 빠른 방법은 무엇입니까?

분류에서Dev

내 스크립트가 배열의 첫 번째 요소에만 액세스하는 이유는 무엇입니까?

분류에서Dev

문자열을 연결하려고하면 세그먼트 오류가 발생합니다.

분류에서Dev

문자열의 첫 번째 문자를 인쇄하면 세그먼트 오류가 발생합니다.

분류에서Dev

배열의 단일 요소에 액세스하는 이유가 일정한 시간 (O (1))으로 수행되는 이유는 무엇입니까?

분류에서Dev

한 번에 2 개의 스레드가있는 배열의 다른 요소에 안전하게 액세스하려면 mutex ()가 필요합니까?

분류에서Dev

Linked List에서 요소를 지우려고하면 세그멘테이션 오류가 발생합니다.

분류에서Dev

배열이 for 루프에서 범위를 넘어서 액세스하려고하는 이유는 무엇입니까?

분류에서Dev

RegEx가 문자열 내의 다음 세그먼트를 선택하지 않는 이유는 무엇입니까?

분류에서Dev

목록 요소에 액세스 할 때 Flutter가 오류를보고하는 이유는 무엇입니까?

분류에서Dev

C에서 2D 배열의 주소에 액세스하려고 시도하고 분할 오류가 발생했습니다.

분류에서Dev

이미지 폴더에 액세스하려고하면 오류가 발생합니까?

분류에서Dev

tkinter의 인스턴스 속성에 액세스하려면 대괄호가 필요하고 파이 게임의 인스턴스 속성에 액세스하려면 점이 필요한 이유는 무엇입니까?

Related 관련 기사

  1. 1

    구조체의 문자열에 액세스하려고하면 세그먼트 오류가 발생합니다.

  2. 2

    배열을 함수에 전달하면 세그먼트 오류가 발생합니다 (코어 덤프 됨).

  3. 3

    내 C 대기열에서 세그먼트 화 오류 (코어 덤프)가 발생하는 이유는 무엇입니까?

  4. 4

    C ++ Linux : 클래스에서 배열을 선언하면 세그먼트 오류가 발생합니다.

  5. 5

    2D 배열을 사용할 때 프로그램에서 세그먼트 화 오류 (코어 덤프) 오류가 발생하는 이유는 무엇입니까?

  6. 6

    배열 프로그램에서 스택 스매싱 오류가 발생하는 이유는 무엇입니까?

  7. 7

    null 유형 값의 배열 오프셋에 액세스하려고합니다.

  8. 8

    코드 결과에 세그먼트 오류 (코어 덤프)가 표시되는 이유는 무엇입니까?

  9. 9

    JavaScript 배열의 요소에 액세스 할 때 오류를 피하는 방법은 무엇입니까?

  10. 10

    mySQL 오류 'null 유형의 값에서 배열 오프셋에 액세스하려고합니다'

  11. 11

    코드 세그먼트의 주소가 0 인 이유는 무엇입니까?

  12. 12

    다른 컨트롤러의 세션 데이터에 액세스하면 오류가 발생합니다.

  13. 13

    배열을 프록시하고 map 함수에 액세스 할 때 배열의 생성자가 확인되는 이유는 무엇입니까?

  14. 14

    "세그먼트 오류 (코어 덤프)"오류가 발생하는 이유를 이해할 수 없습니다.

  15. 15

    코드에서 세그먼트 화 오류 (코어 덤프)가 발생하는 이유를 이해하는 데 어려움이 있습니다.

  16. 16

    Facebook oauth가 https 사이트의 http 버전에 액세스하려고하는 이유는 무엇입니까?

  17. 17

    numpy 배열의 요소를 반복하고 액세스하는 가장 빠른 방법은 무엇입니까?

  18. 18

    내 스크립트가 배열의 첫 번째 요소에만 액세스하는 이유는 무엇입니까?

  19. 19

    문자열을 연결하려고하면 세그먼트 오류가 발생합니다.

  20. 20

    문자열의 첫 번째 문자를 인쇄하면 세그먼트 오류가 발생합니다.

  21. 21

    배열의 단일 요소에 액세스하는 이유가 일정한 시간 (O (1))으로 수행되는 이유는 무엇입니까?

  22. 22

    한 번에 2 개의 스레드가있는 배열의 다른 요소에 안전하게 액세스하려면 mutex ()가 필요합니까?

  23. 23

    Linked List에서 요소를 지우려고하면 세그멘테이션 오류가 발생합니다.

  24. 24

    배열이 for 루프에서 범위를 넘어서 액세스하려고하는 이유는 무엇입니까?

  25. 25

    RegEx가 문자열 내의 다음 세그먼트를 선택하지 않는 이유는 무엇입니까?

  26. 26

    목록 요소에 액세스 할 때 Flutter가 오류를보고하는 이유는 무엇입니까?

  27. 27

    C에서 2D 배열의 주소에 액세스하려고 시도하고 분할 오류가 발생했습니다.

  28. 28

    이미지 폴더에 액세스하려고하면 오류가 발생합니까?

  29. 29

    tkinter의 인스턴스 속성에 액세스하려면 대괄호가 필요하고 파이 게임의 인스턴스 속성에 액세스하려면 점이 필요한 이유는 무엇입니까?

뜨겁다태그

보관