ERROR Double Free 또는 Corruption(아웃).
1599 단어 oopprogrammingcpp
이 기사에서는 "Double Free 또는 Corruption Error"라는 또 다른 오류에 대해 논의할 것입니다. 메모리 작업과 관련된 오류입니다. 이 오류에 대한 모든 설명과 솔루션은 미리 제공됩니다.
제목: "오류 Double Free 또는 Corruption(out)."
태그: cpp
canonical_url: https://kodlogs.com/blog/332/error-double-free-or-corruption-out
이중 무료 또는 손상 오류
프로그램의 Double Free 또는 Corruption Error 오류는 프로그램에 C 런타임 함수 free()가 있음을 의미합니다. C 런타임 함수인 free()는 실수로 호출되거나 잘못된 포인터로 호출될 수 있습니다. 이 모든 소란은 동적 메모리 할당을 사용하거나 free()를 직접 호출하여 발생할 수 있습니다.
원인
이 오류는 일반적으로 범위를 벗어난 배열 인덱스로 인해 코드가 메모리를 덮어쓴 경우 발생합니다. 추가 설명을 위해 이 예를 관찰할 수 있습니다.
!! Generates a "double free or corruption" error.
program free
integer, dimension(:), allocatable :: data
integer :: i
allocate(data(5))
do i = 1, 5
data(i-1) = i
end do
deallocate(data)
end program free
이 코드를 컴파일하면 이 오류가 발생합니다.
./free: double free or corruption (out): 0x0000000000607590
해결책
이 문제를 해결하려면 문제가 어디에 있어야 하는지 추적해야 합니다. 이를 달성하는 방법은 유효하지 않은 배열 인덱싱을 확인하려면 -fbounds-check를 사용하여 프로그램을 컴파일하는 것입니다. 그런 다음 다시 실행할 때 범위를 벗어난 배열 인덱싱이 있으면 다음과 같은 오류 메시지가 표시됩니다.
% gfortran -fbounds-check -o free free.f90
% ./free
At line 8 of file free.f90
Fortran runtime error: Array reference out of bounds for array 'data', lower bound of dimension 1 exceeded (0 < 1)```
This redirects us to a line of code. Here we can rewrite it and can change it to solve our issues.
Reference
이 문제에 관하여(ERROR Double Free 또는 Corruption(아웃).), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/whataluckyguy/error-double-free-or-corruption-out-52ed
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
!! Generates a "double free or corruption" error.
program free
integer, dimension(:), allocatable :: data
integer :: i
allocate(data(5))
do i = 1, 5
data(i-1) = i
end do
deallocate(data)
end program free
./free: double free or corruption (out): 0x0000000000607590
% gfortran -fbounds-check -o free free.f90
% ./free
At line 8 of file free.f90
Fortran runtime error: Array reference out of bounds for array 'data', lower bound of dimension 1 exceeded (0 < 1)```
This redirects us to a line of code. Here we can rewrite it and can change it to solve our issues.
Reference
이 문제에 관하여(ERROR Double Free 또는 Corruption(아웃).), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/whataluckyguy/error-double-free-or-corruption-out-52ed텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)