일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 티스토리
- Win32
- 리뷰
- c++
- Tips프로그래밍강좌
- 문법
- tipssoft
- Desktop
- Direct2D
- VS ERROR
- 프로그래밍
- 이지스퍼블리싱
- 지식나눔강좌
- Tips강좌
- 김성엽
- doit코틀린프로그래밍
- 알고리즘
- 배열
- 포인터
- c
- c#
- Windows
- Programming
- CS
- 연산자
- 백준
- 함수
- Visual Studio
- Javascript
- Kotlin
- Yesterday
- Today
- Total
목록접근 (2)
F.R.I.D.A.Y.
오랜만에 돌아온 VS ERROR 시리즈입니다. 이번 시간에는 C6385 경고를 살펴봅니다. 문제 코드 #define _CRT_SECURE_NO_WARNINGS #include int main(void) { int arr[5] = { 0, }; for (int i = 0; i < 5; ++i) { scanf("%d", arr + i); arr[5] += arr[i]; // 오류 발생 위치 } return 0; } 원인. 접근 가능한 메모리 이탈 위 코드에서 접근 가능한 메모리 인덱스는 0부터 4입니다. 그런데 경고가 발생하는 위치에서는 인덱스를 5로 사용하고 있습니다. 따라서 범위를 수정해주면 정상적으로 경고가 사라집니다. C6201 경고가 함께 발생하는 것을 보니 일차원 배열에 대해서는 스택 범위까지 V..
char str1[] = "abcdefg"; char *str2 = "abcdefg"; 가끔씩, 배열과 포인터를 혼동하는 사람들이 있어서. 배열 str1은 문자열 "abcdefg"에서 각각의 문자를 수정할 수 있다. 그러나 포인터 str2 는 각각의 문자를 수정할 수 없다. 사실, 굉장히 간단한건데 기본적인 프로그램의 구조를 몰라서 생기는 문제라고 생각한다. 배열에서도, 포인터에서도 쌍따옴표로 묶은 문자열로 값을 초기화 할 수 있다. 그런데, 배열은 정확히 하면 초기화를 편하게 할 수 있도록 추가 문법을 제공한 것으로 볼 수 있다. 따라서 char str1[] = { 'a','b','c','d','e','f','g','\0' }; 일일이 대입이 되기 때문에 변경이 가능하다. 그러나 포인터에 값을 대입하는..