강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của kwontnals5204
kwontnals5204

câu hỏi đã được viết

Các cấu trúc dữ liệu và thuật toán nguồn mở trong C

Giới thiệu node đuôi của Linked List

tail노드의 이유 & 메모리 풀링 관련

Viết

·

312

0

메모리 풀링은 그렇다면 주로 어느정도의 사이즈를 가정할 수 있을때나 시스템상 핸들링 할 수 있는 최대치를 넣어 구현한다는 말씀이신가요?그렇다면 내부적으로 너무 많은 메모리를 사용하지않고 낭비되어 효율성이 떨어지지 않나요? 어느 시점에 써야 하는지에 대한 부분이 좀 명확하지않아, 어떤 상황에 써야 되는 기법인지 묻고 싶습니다. 2번째는 현 tail 노드를 추가하는 부분에 있어서 .... 왜 마지막 노드의 next가 NULL인것에서 문제가 생기는 지 이해가 잘 되지 않습니다.for문이나 while문으로 loop하여 display하는것으로 가정했을때 마지막 노드 next가 0이게 되면 더이상 반복문이 실행되지않고 끝나게 되면서, NULL이 프린트 되지않고 나오지않나요?예시로 for문 중간에 왜 아무것도 기입하지 않는 부분도 어떻게 컴파일은 진행이되고 세크먼트로폴트 결과가 나오는걸까요? 혹시 선생님 말씀은 null로 마지막 node가 설정되지 않은 쓰레기값이 설정되었을때를 방지하기위해 tail노드를 추가적으로 안전하게 설치하자는 말씀이실까요?
clinux알고리즘gccdata-structure

Câu trả lời 2

0

jikim1770님의 프로필 이미지
jikim1770
Người chia sẻ kiến thức

질문 내용에 항목 별로 답변 드리겠습니다.

메모리 풀링은 그렇다면 주로 어느정도의 사이즈를 가정할 수 있을때나 시스템상 핸들링

할 수 있는 최대치를 넣어 구현한다는 말씀이신가요?

그렇다면 내부적으로 너무 많은 메모리를 사용하지않고 낭비되어 효율성이 떨어지지 않나요?

어느 시점에 써야 하는지에 대한 부분이 좀 명확하지않아, 어떤 상황에 써야 되는 기법인지 묻고 싶습니다.

답변 : 대부분 시스템에서는 메모리 풀링의 최대치를 관리 하고 있습니다.

 

예를 들어 운영체제의 프로세스의 최대수 1024, 한 프로세스에서 오픈 가능한 파일수 1024

등 너무 메모리를 낭비 하지 않는 선에서 시스템에 필요한 최대수를 메모리 풀링 하면 됩니다.

2번째는 현 tail 노드를 추가하는 부분에 있어서 .... 왜 마지막 노드의 next가

NULL인것에서 문제가 생기는 지 이해가 잘 되지 않습니다.

for문이나 while문으로 loop하여 display하는것으로 가정했을때 마지막 노드

next가 0이게 되면 더이상 반복문이 실행되지않고 끝나게 되면서,

NULL이 프린트 되지않고 나오지않나요?

답변 : 포인터 변수 temp에 NULL이 들어온 경우 그대로 역참조 하게 되면

프로세스가 런타임 상에서 죽게 됩니다. NULL은 0번지를 의미하고 0번지를

접근하면 운영체제가 해당 프로세스를 죽게 만듭니다.

예) temp->data ==> (*temp).data => (*0).data 0 번지를 참조함

 

예시로 for문 중간에 왜 아무것도 기입하지 않는 부분도 어떻게 컴파일은 진행이되고

세크먼트로폴트 결과가 나오는걸까요?

답변 : for문 중간은 조건문 이므로 조건이 필요하지 않은 경우 생략할 수 있습니다.

컴파일러는 이를 에러 처리 하지 않습니다.

하지만 for문의 조건을 통과하게되면 위에 답변 처럼 temp가 NULL 인 경우

temp->data 문법에서 세크먼트 폴트 예외가 발생 하여 죽게 됩니다.

 

혹시 선생님 말씀은 null로 마지막 node가 설정되지 않은 쓰레기값이 설정되었을때를

방지하기위해 tail노드를 추가적으로 안전하게 설치하자는 말씀이실까요?

답변 : tail을 사용하여 종료 조건을 판단 하면 NULL을 만나지 않게 되어

프로세스가 죽는 문제를 해결할 수 있습니다. tail의 next는 NULL로 되어

있지 않고 자신을 가리키기 때문 입니다.

0

Sss님의 프로필 이미지
Sss
Người đặt câu hỏi

for문 중간의 기입하지 않는 부분에 대해서는 null참조의 위험성때매 그렇다는것은 알게되었습니다.

Hình ảnh hồ sơ của kwontnals5204
kwontnals5204

câu hỏi đã được viết

Đặt câu hỏi