[Windows] dbgheap.cのassertion エラー

他で作成したソースコードを取り込んでdllにし、コンパイル・リンクしたところ

File: f:\dd\vctools\crt_bld\self_64_amd64\crt\src\dbgheap.c
Line: 1424

Expression: _pFirstBlock == pHead

というアサーションエラーが発生。

このエラーメッセージで検索してみると同様な問題はウェブ上にたくさんあった。
自分のケースに似ているものは以下。

stackoverflow.comでの質問。
Debug assertion failed error when passing std::string from c++/cli dll to native win32 dll

C++ REST SDK casablancaのフォーラム。
Debug Assertion Failed mystery – _pFirstBlock == pHead

この2つの事例の共通点はdllを使ったプログラムでdllと呼び出す側との境界を行ったり来たりする手続き上で発生していること。

2重フリーでも発生するエラーなので、dll内でフリーしたものをその後にフリーする、というケースでも発生するのかも。

dll化はあきらめて libにしたところエラーはなくなった。

広告

コメントを残す

コメントを投稿するには、以下のいずれかでログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。