https://www.acmicpc.net/problem/10811
Baekjoon Online JudgeBaekjoon Online Judgewww.acmicpc.net이 문제 풀면서
int n, m;
scanf("%d %d", &n, &m);
int* bsk;
bsk = (int*)malloc(n * sizeof(int));
for (int i = 0; i < n; i++) {
bsk[i] = i+1;
}
이런 식으로 배열을 만드는 코드를 짜봤는데 Visual Studio 22에서 실행시키니깐
bsk[i] = i+1; 부분에서
0x00007FF72AF21A19에(C.exe의) 처리되지 않은 예외가 있습니다. 0xC0000005: 0xFFFFFFFFDC420020 위치를 기록하는 동안 액세스 위반이 발생했습니다..
자꾸 이런 식으로 오류가 뜨더라고요...
CodeBlocks에서는 문제없이 잘 실행됐고 문제도 결국엔 맞혔는데 비주얼 스튜디오에서는 무슨 이유로 자꾸 예외가 발생하는지 궁금합니다..ㅠㅠ
#pragma warning(disable:4996) 넣어도 에러 나요?
맨위에 넣은 다음에 해봤는데도 똑같아요ㅠㅠㅠ
n값 잘못줘서 그런거 같은데 if (n < 0) retrun 0; 이런식으로 예외처리 해봐요 n 정의할떄 n = 1 이렇게도 해보고
그래도 안 되네용... 이게 다른 데에선 제대로 됐던 건데 비주얼 스튜디오만 왜 이러는지 모르겠어요
Scanf랑 malloc은 리턴 값이 다 있는 함수임 그니까 scanf가 안 되는 거 같으면 scanf의 리턴 값을 확인하면 최소한 인풋이 됐는지 알 수 있는 거고 malloc도 마찬가지고 리턴값을 확인하면 할당 실팬지 아닌지 알 수 있음
오.. 몰랐던 거 배워가네요
#define _CRT_SECURE_NO_WARNINGS#include #include #include int main() { int n, m; scanf("%d %d", &n, &m); int* bsk; bsk = (int*)malloc(n * sizeof(int)); for (int i = 0; i < n; i++) { bsk[i] = i + 1; } printf("12"); return 0;}방금 대충했는데 12 출력까지 잘 됨뭐 설정이나 inclue문 빠진거 있는거 아님?
#include 3개인 거 맞나요? 무슨 의미인가요?
그냥 자주쓰는 세개 넣었는데 아마 stdio.h는 넣었을꺼고 stdlib.h 가 빠져있는거 같은데
stdlib.h 가 포인터나 동적배열 관련으로 대충암 그냥 하다보니 저 세개는 무조껀 넣게 되서 적음
stdlib 넣으니깐 잘 되네요... 진짜 감사합니다!!
stdlib을 안 넣었는데 malloc을 썼다는 게 맞냐?? 백준에서는 잘 되는 건, 사실 링커 관련 이슈 있으니까, 숏코딩 해본 사람들은 실행 잘 되는 거 알 텐데. VS가 정작 런타임 오류 (아마도 segfault) 를 터트리면서 컴파일 과정에서 헤더가 포함 안 된 코드를 warning 한 번 안 띄웠다는 게 좀 이상하긴 하네... 별개로 stdlib은 qsort, bsearch 같은 함수를 제공해주고 malloc, free도 있는 괜찮은 헤더긴 해
ㅋㅋㅋㅋㅋㅋ 진짜 아무것도 몰라서요... 그냥 malloc이 이런 건가 보구나~ 하고 정작 쓰는데 무슨 헤더가 필요한지도 안 찾아봤네요 감사합니당