質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

3874閲覧

無限ループが原因?でエラーになる EXC_BAD_ACCESS (code=2, address=...)

testyoutatsu

総合スコア29

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2018/08/18 17:04

編集2018/08/19 07:51

前提・実現したいこと

プログラミング初心者です。
巨大なデータを処理するために以下のようなコードを書きました。コードは質問用にかなり簡略化してあります。質問の意図が伝わらない場合はお手数ですが修正依頼をお願いします。

まずユーザーが開始値(start)と終了値(end)を設定します。開始値から終了値まで「ファイルを読み込み計算し、startに1を加算する」を繰り返します。start == end となったところでghi()で計算、heikin()で平均してtableviewに表示します。

計算に使うcsvファイルは最大約15,000個です。

シュミレーターでビルドしてみると約1500回の計算処理を繰り返すと計算するコード部分に以下のエラーが出ます。実機でビルドしてみると約240回の計算処理を繰り返したところでエラーが出ました。
おそらく無限ループになっていると判断されエラー出るのだと推測しています。

このエラーの意味と解決方法を教えていただけませんでしょうか。よろしくお願いします。

発生している問題・エラーメッセージ

EXC_BAD_ACCESS (code=2, address=0x7ffee7d5ffc8) //address=...は毎回違います。

該当のソースコード

swift

1 2override func viewDidLoad() { 3 super.viewDidLoad() 4 5 abc() 6 7} 8 9 10func abc() { 11 if start != end { 12 def() 13 } else { 14 ghi() 15 } 16} 17 18func def() { 19 // csvファイル読み込み計算する 20 start += 1 21 abc() 22} 23 24func ghi() { 25 // 最後の計算をする(def()と少し違う計算) 26 heikin() 27} 28 29func hekin() { 30}

試したこと

For文で処理し、start == end となったところでbreakさせればいいと思ったのですが、上手くコードを書くことができませんでした。
ループ処理を使ったコード例を回答していただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

defのなかでabc自身を呼び出してます
これでスタックが消費されてしまいますが、これが15000回も繰り返されるとスタックのエリアが使いつくされてしまいます
そのため、他のエリアのデータが破壊され(ようとし)ますんで、不正アクセスとなります

自分自身を呼び出すんではなく、ループで実装するようにしましょう

投稿2018/08/18 21:58

y_waiwai

総合スコア87747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問