#include <algorithm>
using namespace std;
.....
int arr[5];
sort(arr, arr+5);
이런식으로 하던데
arr+5에 해당하는 주소가 혹시 끝에있어서 다른곳으로 넘어갈 가능성 없음??
arr+ 0~ 4 까지가 arr 선언할때 할당밭은 주소값이니까
arr + 5는 뭐가 들어있는지 모르는곳인거 같은데 아닌가?
만약 arr + 4가 마지막주소값이라면 arr+ 5를 참조하면 에러뜨고 그러는 경우 없나??
짜다보니까 잘모르겠는데 뭔가 안전하지 않은거 같음
arr + 5 이전까지 참조하는 것 아님? - dc App
arr[5]를 사용할 때 arr+4를 인수로 주는 것 보다 직관적이라서 그런거같은데 - dc App
보통많이쓰는 프로그래밍 언어에서 구간을 명시할때 왼쪽은 닫혀있고 오른쪽은 열려있음 저렇게 표현해야 0에서 4까지
저게 범위지정이 half-opened [,) 라서 저렇게 해도 되요. 일반 배열의 경우에는 연속적으로 메모리가 할당되니까 중간에 끼어들지 않는 이상은 오류 뻥 터질 염려는 없을 듯. 그리고 진짜 정석대로 하면 순차 이터레이터나 리버스 이터레이터가지고 씀요.
마지막주소 다음꺼 넘겨주게 되어있는데 그 주소값을 이용해서 비교연산같은거 할꺼아님. 근데 이 주소값 세그먼트오류? 에서 안전한건지 궁금
비교는 괜차늠 역참조가 위험한거지
정렬하고자 하는 배열 안의 인덱스로만 지정해주면 (end위치 포함) 세그먼트 뿜 할 일은 없을 듯한데여
주소값이 4바이트인 경우 arr+4 가 0xffffffff 인경우나 흠
그렇군 ㄳㄳ
뭐가 들어있는지 모르는공간의 주소를 쓰길래 불안해서
음... 그렇게 되면 아예 프로그램 자체적으로 자원 할당에 실패한 꼴이 될텐뎅 소팅까지 안가고 배열 만드는 시점에서 뿜 될듯.
포인터 쓸때 표현범위 오버플로우는 걱정 안해두댐
어차피 윗부분은 못만짐