2010-03-13 8 views
4

iPhone에 실행 파일 또는 실행 파일 + 공유 객체의 최대 크기가 있습니까? 나는 SIGSYS로 시작하거나 실행 초기에 충돌 한 앱을 개발 해왔다. 코드가 단순히 실행되지 않도록 데이터를 구조화했지만 프로그램에서 코드를 제거하는 것이 도움이되었습니다.iPhone의 최대 실행 파일 크기는 무엇입니까?

이것은 메모리 손상 일 수 있지만, -O2 또는 -O3 대신 -O를 사용하여 컴파일하면 실행 파일 크기가 5.15MB에서 3.60MB로 줄어들고 응용 프로그램이 완벽하게 실행됩니다. 나는 물론 내가 사용하는 많은 라이브러리를 가지고있다.

iPhone의 실행 코드 크기에 제한이 있습니까? 아니면 '운이 좋으면'오스를 사용할 때 메모리 손상을 마스킹합니까?

답변

0

메모리가 부족합니다. 메모리 경고를 받고 있습니까?

+0

메모리가 부족합니다. -O를 사용하여 컴파일 할 때 많은 메가 바이트의 데이터를로드하려면 프로그램에 충분히 도달 할 수 있습니다. 전에 메모리를 다 써 버렸지 만, 이보다 더 많은 양을로드 한 후에야 말입니다. – Sirp

+0

그럴 경우 @marcc에 동의해야합니다. 당신의 버그는 다른 곳에 있으며 당신은 운이 좋게됩니다. –

2

최대 크기가있는 경우 5.15 또는 3.60MB 앱 파일을 사용하는 방법이 없습니다. 앱에 다른 버그가 있습니다.

운이 좋게됩니다.

0

앱 스토어를 통해 전송할 수있는 최대 실행 파일 크기가 있지만 하드웨어 자체가 비정상적인 제한을 부과하지 않습니다.

문제는 대부분 귀하의 라이브러리 중 하나에 있습니다. 귀하의 앱의 복잡성에 대한 귀하의 설명에 기반하여, 내 부분에 대한 유용한 관찰이 아닙니다.

컴파일러 옵션이있는 패턴이 주어진다면, 나는 문제가있는 라이브러리를 가지고 있고 더 엄격한 컴파일로 인해 코드가 제외되도록하는 야생의 야생 추측을 수행 할 것입니다.

롱샷의 제목 아래에서 이미지와 같은 리소스를 살펴볼 수도 있습니다. 지난 몇 년 동안 겉으로보기에는 무해한 리소스가로드 될 때 치명적인 오류를 유발하는 사례가 두 번있었습니다.

0

정확하게 똑같은 문제가 발생했습니다. 수십 또는 수백 개의 C++ kloc에서 저는 전혀 문제가 없었습니다. 이제는 기본적으로 &을 복사하여 두 개의 버튼 이름을 바꾸었고 시작시 액세스 위반이 발생했습니다.

함수의 주소를 사용하기 때문에 새 코드가 실행되지 않습니다. 새로 링크 된 컴파일 장치는 백그라운드 코드 실행을 유발할 수있는 외부의 단일 정적 심볼에 의존하지 않습니다.

디버거가 유용한 위치를 가리 키지 않습니다. 내 실행 파일은 약 3.6 MB입니다.

관련 문제