0

クロスプラットフォームにすることを期待して、Objective-CライブラリをCライブラリに変換しました。しかし、私がこのことを処理のために送るまで、すべてがうまくいくように見えます。

エラーが発生した時点です。

いくつかのリビジョンを振り返ると、デバッガーに何かがあることに気づきました。

このようにmallocされた文字列の直後:

char *theString = malloc(SOME_SIZE * sizeof(char));

theStringは\x03で、*theStringは"3'\003'"であることがわかります。

最初は、strcatなどを何も付けていないので、これは奇妙な記憶だと思いましたが、奇妙な開始文字が引き継がれ、同様のmallocを実行する他のすべてのポイントで繰り返されます。

通常の処理では、これで問題ありません。残念ながら、私はそれが何であるかを理解していません、さもなければ、私はその最初のキャラクターか何かを切り落とすような劇的な何かをするでしょう。

それが何であるか、そしてそれを安全にNSStringに変換したい場合、私がそれをどのように扱うかを誰かが私に説明できますか?

4

1 に答える 1

10

mallocによって返される値は、特定の値に設定されることが保証されていません。少なくとも指定した長さのメモリを指すことが保証されています。メモリをある値に初期化する場合は、自分で行う必要があります。または、メモリをゼロにするcallocを代わりに使用します。

于 2009-05-28T03:30:51.077 に答える