私は C を使用して Android 用のネイティブ アプリを作成しています。どこかで、単純な C コードを記述した部分文字列を取得する単純な古い仕事をしたいと考えています。これはコードです:
char* get_part_allocated(const char* src, int start, int len)
{
LOGI("copying [%s] from [%d] len [%d]\n", src, start, len);
int nlen = len+1;
char* alloc = (char*)malloc(nlen*sizeof(char));
strncpy(alloc, src+start, len);
LOGI("result is: [%s]\n", alloc);
return alloc;
}
このコードを PC でコンパイルして実行すると、期待どおりの結果が得られますが、Android で実行すると、最後に奇妙な文字が常に含まれており、プログラムの流れが損なわれ、障害が発生します!
これは、logcat 出力のスクリーンショットです。
NULL を 2 つまたは 3 つ追加してみましたが、何も変わりませんでした。
誰かがそれが何であるかを知っていますか?どうすればそれを取り除くことができますか?