일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Javascript
- 티스토리
- Programming
- 함수
- Tips강좌
- Tips프로그래밍강좌
- c++
- VS ERROR
- Win32
- 리뷰
- doit코틀린프로그래밍
- Desktop
- CS
- 김성엽
- 이지스퍼블리싱
- Visual Studio
- 지식나눔강좌
- 포인터
- 백준
- Windows
- 연산자
- 문법
- 배열
- tipssoft
- 프로그래밍
- Kotlin
- Direct2D
- c
- c#
- 알고리즘
Archives
- Yesterday
- Today
- Total
F.R.I.D.A.Y.
VS ERROR C6385: var에서 잘못된 데이터를 읽고 있습니다. 읽기 가능한 크기는 'var*4'바이트인데 실제로는 n바이트만 읽을 수 있습니다. 본문
DEV/Tip
VS ERROR C6385: var에서 잘못된 데이터를 읽고 있습니다. 읽기 가능한 크기는 'var*4'바이트인데 실제로는 n바이트만 읽을 수 있습니다.
F.R.I.D.A.Y. 2021. 6. 26. 05:41반응형
메모리 관련 작업을 하면 주로 보이는 C6385
발생 재현
C6385 경고는 주로 메모리 할당 관련 작업을 할 때 일어납니다. MS 공식 문서의 내용을 보면 접근이 허용된 메모리 공간을 벗어난 경우에 이런 경고를 띄우는 것으로 안내하고 있습니다.
int arr[10];
int i = 0;
while(i <= 10) arr[i] = i;
위 코드는 arr[10]까지 접근을 하므로 문제의 소지가 있습니다. 때문에 컴파일러가 다시 고치라고 안내하는 것이죠.
배열을 사용하는 경우라면 정상적으로 안내가 되는데 반해, 아래와 같이 포인터 문법을 사용한 경우 범위를 맞게 작성했음에도 불구하고 경고가 계속해서 발생하는 경우가 있습니다.
int *arr;
arr = new int[10];
int i = 0;
while(i < 10) arr[i] = i;
delete[] arr;
위 코드는 Visual Studio[# Microsoft Visual Studio Community 2019 버전 16.10.2]에서 검사해도 문제가 없다고 나옵니다. 그러나, 이차원 이상을 구현하는 경우에 특히 경고가 날뜁니다.
원인
해당 경고는 인텔리센스 오류입니다. 만일 본인이 작성한 코드가 정상적으로 동작한다고 생각이 된다면 무시해도 되는 경고입니다.
해당 경고는 주로 발생하는 다차원 포인터로 메모리를 동적할당, 관리하는 코드에서는 인텔리센스가 동적할당받은 범위를 코드상에서 제대로 분석하지 못해 발생하는 문제입니다.
경고 해제
경고 해제는 다음 포스트를 참고하세요.
# index
728x90
반응형
'DEV > Tip' 카테고리의 다른 글
VS ERROR E1087: 오버로드된 함수 "class::func"의 인스턴스 중 인수 목록 및 개체와 일치하는 인스턴스가 없습니다(개체에 일치를 방해하는 형식 한정자가 있음). (0) | 2021.09.29 |
---|---|
VS2019에서 코드 작성 및 배포시 알아두면 좋은 xml 문법 (0) | 2021.09.29 |
pragma disable vs pragma suppress (0) | 2021.03.24 |
VS ERROR C6385 : 'variable'에서 잘못된 데이터를 읽고 있습니다. 읽기 가능한 크기는 'n1'바이트인데 실제 크기는 'n2'바이트만 읽을 수 있습니다. (0) | 2021.03.06 |
[goorm]Kotlin Error: *.jar에 기본 Manifest 속성이 없습니다. (0) | 2020.04.01 |
Comments