0

出力形式はスタックを表示しているため、根本的な原因を見つけるのは困難です。

 ==21663== Invalid read of size 4
==21663==    at 0x4448117: iurcall_init_rlmgt_IsAllAlcapSuccess(Iurcall_Init_CallCtx_t*) (iurcall_init_rlmgt_p.cc:6319)
==21663==    by 0x47D98DD: iurcall_init_rlmgt_IsAllAlcapSuccess_Test_return_1_when_edchMacD_flow_ctx_not_exist_and_alcapEstablish_is_FALSE_Test::TestBody() (iurcall_init_rlmgt_p_test.cc:373)
==21663==    by 0x8BCAB27: testing::Test::Run() (gmock-gtest-all.cc:3436)
==21663==    by 0x8BD1966: testing::internal::TestInfoImpl::Run() (gmock-gtest-all.cc:3655)
==21663==    by 0x8BD1AA8: testing::TestCase::Run() (gmock-gtest-all.cc:3761)
==21663==    by 0x8BD1D96: testing::internal::UnitTestImpl::RunAllTests() (gmock-gtest-all.cc:5365)
==21663==    by 0x8BD1F21: testing::UnitTest::Run() (gmock-gtest-all.cc:5028)
==21663==    by 0x4820149: Gtest_initialisation(int, char**) (iurcall_init_gtest_main.cc:49)
==21663==    by 0x808E500: main (bosinit_config_template.h:439)
==21663==  Address 0xa8190e4 is 44 bytes inside a block of size 56 free'd
4

1 に答える 1

0

この Valgrind の出力は不完全に見えます。この質問のように、2 番目のコール スタックが の後に出力されるはずAddress 0xa8190e4 is 44 bytes inside a block of size 56 free'dです。

このコール スタックが問題の根本原因です。これはメモリ リークではありません。すでに割り当てが解除されているオブジェクトを操作しようとしています。2 番目のコール スタックはオブジェクトの割り当てが解除された場所で、最初のコール スタックはオブジェクトが使用された場所です。

于 2012-05-17T10:32:23.140 に答える