私はLinuxからMac OS X(ヒョウ)にアプリケーションを移植しようとしていますが、実行するとmalloc: *** error for object 0x100160 : double free
というエラーメッセージが表示されます。malloc:printfとNULL wchar_tでエラーダブルフリー*
私は以下のコードでこの問題を再現しました:もしので、それは奇妙だ
a=a, b=(null)
test (5337) malloc: *** error for object 0x100160 : double free
*** set a breakpoint in malloc_error_break to debug
:
gccでコンパイルさ//main.cpp
#include <stdio.h>
#include <wchar.h>
int main(int argc, char*argv[])
{
wchar_t *b=NULL;
printf("a=%ls, b=%ls \n", L"a", b);
}
:
gcc main.cpp -o test
実行の出力私はこの行を使用します:printf("a=%ls, b=%ls", b, b)
、エラーは表示されません。 さらに、wprintf(L"a=%ls, b=%ls", a, b)
は使用できません。 Fedora 13では、このプログラムはエラーを出力しません。
printfのバグですか? このエラーを削除するにはどうすればよいですか?
あなたは、なぜそれがデータを指すことを一般的に期待している関数にNULLポインタを渡すと、問題に遭遇するのか疑問に思っていますか? – Cascabel
CRTライブラリのバグを除いて、この動作の説明はありません。 –
@Al:printfがヌルポインタを正常に処理するという保証があることを示唆していますか?私はあなたが探している説明は "未定義の動作は未定義です"と思う。 – Cascabel