これは、「libtorrent::session ses」変数を初期化する方法です:
ses( fingerprint( "UT", LIBTORRENT_VERSION_MAJOR, 8, 7, 0 )
, std::make_pair( 49152, 65534 )
, "0.0.0.0"
, session::add_default_plugins
, alert::progress_notification
)
ただし、セッション コンストラクターで次の行を実行すると、EXC_BAD_ACCESS code=1 が返されます。
init(listen_port_range, listen_interface, print, alert_mask);
参照用の init メソッドの完全なソースは次のとおりです。エラーが発生している行は、次のスニペットで見つけることができます。
session(fingerprint const& print
, std::pair<int, int> listen_port_range
, char const* listen_interface = "0.0.0.0"
, int flags = start_default_features | add_default_plugins
, int alert_mask = alert::error_notification
TORRENT_LOGPATH_ARG_DEFAULT)
{
TORRENT_CFG();
TORRENT_ASSERT(listen_port_range.first > 0);
TORRENT_ASSERT(listen_port_range.first < listen_port_range.second);
init(listen_port_range, listen_interface, print, alert_mask);
#if defined TORRENT_VERBOSE_LOGGING || defined TORRENT_LOGGING || defined TORRENT_ERROR_LOGGING
set_log_path(logpath);
#endif
start(flags);
}
犯人はゾンビ、つまり解放された変数である可能性があると読みましたが、初期化中に渡した変数のどれが解放された可能性があるのか わかりません。それらはすべて問題ないようです私に。
問題は、libtorrent::session 変数の初期化中に EXC_BAD_ACCESS エラーが発生するのはなぜですか?
ヒントや提案をいただければ幸いです。