_crtisvalidheappointer(block) 오류에 대해서 궁금합니다.
1093
작성한 질문수 1
#include <stdio.h>
int main()
{
int n = 10;
int* ptr = NULL;
/* malloc */
ptr = (int*)malloc(n * sizeof(int));
n = 20;
int* ptr2 = NULL;
ptr2 = (int*)realloc(ptr, n * sizeof(int));
printf("ptr을 ptr2로 realloc 후 주소 비교 ptr vs ptr2\n");
printf("%p %p \n", ptr, ptr2);
printf("ptr을 ptr로 realloc 후 주소 비교 ptr vs ptr2\n");
ptr = (int*)realloc(ptr, n * sizeof(int));
printf("%p %p \n", ptr, ptr2);
}
굵은 줄로 표시된 라인에 접근 시, 위의 사진과 같은 오류가 발생합니다.
재할당된 포인터 ptr에 재접근 하여서 그런 것인가요?
그렇다고 생각이 되어,
ptr = (int*)realloc(ptr2,n*sizeof(int)); 로 접근하였는데도, 같은 오류가 발생합니다.
해당 오류의 원인이 무엇인지 궁금합니다!
답변 2
1
안녕하세요!
질문은 연관 강의에서 질문 주시기를 부탁드립니다.😀 그래야 제가 어떤 강의에서 질문을 주신 것인지를 알 수가 있고(저도 답변 드리기 위해 강의를 다시 돌려봐야하는데 이렇게 질문 주시면 어떤 강의에서 질문 주신 것인지 알 수가 없거든요ㅠㅠ) 다른 수강생 분들도 해당 강의 들으실 때 질문을 쉽게 참고하실 수 있습니다.
일단 답변을 드리자면
제 컴퓨터에서는 질문자님의 코드가 문제 없었습니다. 디버깅도 문제 없었습니다!
이 코드 자체도 제 견해로는 문제 없어보입니다. 기존에 ptr2가 가리키던 메모리는 해제하고 ptr2 에 새롭게 할당받은 메모리의 주소를 받고, ptr도 이 ptr2 값을 그대로 복사 받아서 새로 할당 받은 메모리를 ptr과 ptr2가 가리키는 모양이 됩니다. 문제 없어 보입니다.
제 컴퓨터에선 잘 돌아가고 코드상으로는 문제 없어보여서 저도 잘 모르겠네요 ㅠ ㅜ
0
답변 감사드립니다 !
제가 질문 시 주의사항을 제대로 읽지 않고 질문하여 불편을 드린 것 같아 죄송합니다ㅠㅠㅠ
컴퓨터마다 메모리 접근이 다를 수도 있는 것인지 참으로 신기하고 묘하네요 ㅎㅎㅎ
다시 한번 답변 감사드립니다 !
완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.
1
50
3
main 함수에서 왜 int만 선언이 되는걸까요
1
54
2
8비트 2진수 변환시 왜 1을 더해야하나요?
1
53
2
혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?
1
48
1
프로토타입과 함수간의 인자 불일치
1
72
2
12.12 헤더 관련 질문
1
59
2
Visual Studio Community 2026 사용 문의
1
136
2
Q. 15:30, 부호가 있는 8비트 정수 질문
1
59
2
getchar(), putchar()
1
92
3
강의자리ㅛ
1
78
2
비주얼스튜디오코드로 공부해도 상관없나요?
1
112
2
소스파일안에 여러 파일
1
75
2
F5와 F7의 차이
1
75
2
c = TWO * (a+b); 에서 a와 b는?
1
58
2
; 세미콜론을 붙이는 기준에 문의
1
68
1
Step over 기능 문의
1
52
2
2.6 강의 따옴표 출력 규칙 문의
1
74
2
int main 함수 관련 오류 문의
1
67
2
13.4 words[0]
0
60
2
11.7 함수를 구현해 봤습니다.
1
62
2
11.6 직접 strcmp와 strncmp를 구현해 보았습니다.
1
64
2
11.6 my_strcat과 my_strncat을 구현해봤습니다.
1
53
2
11.6 fit_str함수를 구현해 봤습니다.
1
53
2
11.5 코드 구현
1
67
2





