boost :: make_shared вызывает нарушение прав доступа

У меня есть приложение Visual Studio 2008 C ++ для ARMV4I Windows Mobile 6, где я использую boost :: shared_ptr <> для управления довольно большим объектом. (4 КБ). К сожалению, boost :: make_shared <> вызывает исключение нарушения прав доступа.

Мой код:

struct Foo
{
    char a[ 4 * 1024 - 1 ];
};

int _tmain( int argc, _TCHAR* argv[] )
{
    boost::shared_ptr< Foo > f = boost::make_shared< Foo >(); // Access Violation
    return 0;
}

Стек вызовов исключения:

test.exe!boost::detail::sp_ms_deleter<o>::sp_ms_deleter<o>(void) Line: 60, Byte Offsets: 0x18   C++
test.exe!boost::make_shared<o>(void) Line: 106, Byte Offsets: 0x5c  C++
test.exe!wmain(int argc = 1, wchar_t** argv = 0x01b40060) Line: 81, Byte Offsets: 0x18  C++
test.exe!mainWCRTStartup(HINSTANCE__* hInstance = 0x00000003, HINSTANCE__* hInstancePrev = 0x00000000, unsigned short* lpszCmdLine = 0x00000003, int nCmdShow = 0) Line: 188, Byte Offsets: 0x94    C++

Местоположение исключения (boost \ smart_ptr \ make_shared.hpp) :

template< class T > class sp_ms_deleter
{
    /* snip! */        
public:
    sp_ms_deleter(): initialized_( false )
    {    // line: 60  this = NULL
    }

    /* snip! */

Эта проблема не возникает при компиляции для x86 Windows. Эта проблема также не возникает при использовании shared_ptr следующим образом:

boost::shared_ptr< Foo > f1 = boost::shared_ptr< Foo >( new Foo );

Кто-нибудь может объяснить, что? PaulH

5
задан PaulH 10 May 2011 в 19:54
поделиться