원하는 부분에 메모리영역을 할당할수도 없고, 방대한 메모리 영역을 멋대로 쓰거나 할 수 없는 문제까지.
한마디로 malloc를 써서 동적으로 메모리 영역을 할당하더라도, 제약사항이 있다는것.
맥 os x의 디자이너나 개발자들은
왜 이런식으로 제약을 둬서 프로그래머들을 빡치게 만들까?
댓글 19
ARC 찬양해..
코딩농노(121.190)2013-06-09 11:37
ㅋㅋ 안써봐서 모르니 욕을 할수가 없네 ㅋㅋ
씹죶(116.33)2013-06-09 11:37
한마디로 맥에서는 C로 짜는데도 프로그래머에게 자유가 없다는거, 거기에 한술더떠서 가비지컬렉터 까지 있지 ㅇㅇ
ㅁㄴㅇ(121.151)2013-06-09 11:40
뭔 *소리여 안 구현한 메이져급 OS도 있냐?
dot(113.30)2013-06-09 11:45
응? 뭔 소리야? 윈도우나 리눅스도 다 메모리 보호하고, 프로그래머가 malloc 써봐야 특정 영역 내에서만 할당이 되는 걸 텐데... 메모리 전부를 마음대로 주무르려면 아예 운영체제를 만들든가 해야하는 거 아님?
ㅇ(14.37)2013-06-09 11:46
메모리 운운하기 전에 시스템 프로그래밍 기초부터 좀 공부하고 그런 소리를 해라
ㅇ(14.37)2013-06-09 11:49
시스템 영역은 당연히 참조를 못하는건데 그걸 제외한 부분에 공간을 할당하는데, 어떤 주소는 되고 어떤 주소는 안되는게 문제지.
ㅁㄴㅇ(121.151)2013-06-09 11:52
충격적이네요
sh(68.146)2013-06-09 11:52
기본적으로 현대 OS는 다 프로세스끼리 서로 메모리 영역 침범 못하게 보호를 한다고... 니 말대로 아무 데나 가서 하고 싶은 거 다 되면 프로세스간 통신 기법 이딴 건 왜 있겠냐?
ㅇ(14.37)2013-06-09 11:53
그 말대로면 보호되는 영역 안에서는 읽기 쓰기 다 자유롭게 가능해야 한다는 소리아니냐?
ㅁㄴㅇ(121.151)2013-06-09 11:58
어차피 응용프로그래밍에서 자유롭게 다 되는 게 어디있냐? 다 운영체제 손바닥 안에서 노는 거지... 간단한 예로 스택만 살짝 잘못 건드려도 오버플로우 나면서 프로그램 닫아버리는데...
ㅇ(14.37)2013-06-09 12:00
그렇게 자유롭게 하고 싶다면 아예 운영체제 만드는 걸 공부해보든가... 거기서는 진짜로 메모리 영역 전부를 프로그래머가 직접 다루니까
ㅇ(14.37)2013-06-09 12:01
그런가. 프로세스에서 쓸수있는 영역인데도 malloc안되는 현상을 보고 의아했는데, 그런경우에도 허용해서는 안될 이유도 있는가 봄
ㅁㄴㅇ(121.151)2013-06-09 12:03
운영체제 내에서 그 운영체제의 방식을 벗어나서 다른 방식으로 프로그래밍해보려는 것이 OS 해킹이라고 할 수도 있겠네... 해킹에서 제일 먼저 배우는 게 메모리 관련 오버 플로우잖아... 일종의 OS 속이기
ㅇ(14.37)2013-06-09 12:04
malloc으로 할당되는 부분은 힙 세그멘트 뿐이야. 운영체제가 프로세스에 할당하는 메모리 영역에는 여러 세그먼트가 있는 거고, 코드 세그먼트, 데이터 세그먼트, 스택 세그먼트, 힙 세그먼트 등으로 나눠져. 다 각기 용도별로 나눠지는 거지
ㅇ(14.37)2013-06-09 12:06
아. 해킹의 염려가 있기때문에 시스템에서 못 하게 막는건가... 왜 안되는지 한참을 고민함
ㅁㄴㅇ(121.151)2013-06-09 12:06
보안과 메모리 관리를 위한 거지... 윈도우, 리눅스, 유닉스, 맥OS 모두 멀티 프로세스 운영체제이니 메모리 위에 하나의 프로레스(운영 중인 프로그램)만 올라가는 게 아니니, 잘 관리해야 서로의 메모리 영역이 침범하지 않게 됨. 프로그래머가 고의든 실수로든 잘못된 방식으로 메모리를 사용하지 못하게 하려는 것도 있고...
ARC 찬양해..
ㅋㅋ 안써봐서 모르니 욕을 할수가 없네 ㅋㅋ
한마디로 맥에서는 C로 짜는데도 프로그래머에게 자유가 없다는거, 거기에 한술더떠서 가비지컬렉터 까지 있지 ㅇㅇ
뭔 *소리여 안 구현한 메이져급 OS도 있냐?
응? 뭔 소리야? 윈도우나 리눅스도 다 메모리 보호하고, 프로그래머가 malloc 써봐야 특정 영역 내에서만 할당이 되는 걸 텐데... 메모리 전부를 마음대로 주무르려면 아예 운영체제를 만들든가 해야하는 거 아님?
메모리 운운하기 전에 시스템 프로그래밍 기초부터 좀 공부하고 그런 소리를 해라
시스템 영역은 당연히 참조를 못하는건데 그걸 제외한 부분에 공간을 할당하는데, 어떤 주소는 되고 어떤 주소는 안되는게 문제지.
충격적이네요
기본적으로 현대 OS는 다 프로세스끼리 서로 메모리 영역 침범 못하게 보호를 한다고... 니 말대로 아무 데나 가서 하고 싶은 거 다 되면 프로세스간 통신 기법 이딴 건 왜 있겠냐?
그 말대로면 보호되는 영역 안에서는 읽기 쓰기 다 자유롭게 가능해야 한다는 소리아니냐?
어차피 응용프로그래밍에서 자유롭게 다 되는 게 어디있냐? 다 운영체제 손바닥 안에서 노는 거지... 간단한 예로 스택만 살짝 잘못 건드려도 오버플로우 나면서 프로그램 닫아버리는데...
그렇게 자유롭게 하고 싶다면 아예 운영체제 만드는 걸 공부해보든가... 거기서는 진짜로 메모리 영역 전부를 프로그래머가 직접 다루니까
그런가. 프로세스에서 쓸수있는 영역인데도 malloc안되는 현상을 보고 의아했는데, 그런경우에도 허용해서는 안될 이유도 있는가 봄
운영체제 내에서 그 운영체제의 방식을 벗어나서 다른 방식으로 프로그래밍해보려는 것이 OS 해킹이라고 할 수도 있겠네... 해킹에서 제일 먼저 배우는 게 메모리 관련 오버 플로우잖아... 일종의 OS 속이기
malloc으로 할당되는 부분은 힙 세그멘트 뿐이야. 운영체제가 프로세스에 할당하는 메모리 영역에는 여러 세그먼트가 있는 거고, 코드 세그먼트, 데이터 세그먼트, 스택 세그먼트, 힙 세그먼트 등으로 나눠져. 다 각기 용도별로 나눠지는 거지
아. 해킹의 염려가 있기때문에 시스템에서 못 하게 막는건가... 왜 안되는지 한참을 고민함
보안과 메모리 관리를 위한 거지... 윈도우, 리눅스, 유닉스, 맥OS 모두 멀티 프로세스 운영체제이니 메모리 위에 하나의 프로레스(운영 중인 프로그램)만 올라가는 게 아니니, 잘 관리해야 서로의 메모리 영역이 침범하지 않게 됨. 프로그래머가 고의든 실수로든 잘못된 방식으로 메모리를 사용하지 못하게 하려는 것도 있고...
낄낄 바보인증함 ㅋ
애초에 200메가 쓸거면 200메가 요청하고 시작하면 될거아냐