CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 3 of 3
  1. #1
    Join Date
    Nov 2010
    Posts
    54

    Invoke AfxThrowMemoryException cause "Access Violation"

    I want to override the operator new in a class, as follows:

    class CMyclass
    {
    public:
    void* operator new(size_t);
    void operator delete(void*);
    };


    void* CMyclass:perator new(size_t size)
    {
    void *p;

    p = MemoryManager.Alloc(size); // Using customized memory manager to allocate buffer

    if (NULL == p)
    AfxThrowMemoryException();
    }

    However, in debug version, whenever MemoryManager.Alloc(size) returns NULL, which means alloation fails, the AfxThrowMemoryException will cause the following exception:

    Access violation reading location 0x#######

    How to fix the problem.

  2. #2
    VictorN's Avatar
    VictorN is offline Super Moderator Power Poster
    Join Date
    Jan 2003
    Location
    Hanover Germany
    Posts
    20,396

    Re: Invoke AfxThrowMemoryException cause "Access Violation"

    Do you catch somewhere the CMemoryException?

    And please, edit your post adding the Code tags around code snippets!
    Victor Nijegorodov

  3. #3
    Join Date
    Feb 2003
    Location
    Iasi - Romania
    Posts
    8,234

    Re: Invoke AfxThrowMemoryException cause "Access Violation"

    Probably, the problem is inside MemoryManager::Alloc.
    Anyway, MFC has overloaded new operators, enough smart. So, it has no much sense to overload your own, with the risk to lead in headaches, like the one from OP.
    Ovidiu
    "When in Rome, do as Romans do."
    My latest articles: https://codexpertro.wordpress.com/

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured