Thread overview
SC/DMC Porting problem
Jul 27, 2003
Richard M Thomas
Jul 27, 2003
Walter
Jul 28, 2003
Richard M Thomas
Jul 29, 2003
Walter
Jul 30, 2003
Richard M Thomas
Jul 31, 2003
Walter
July 27, 2003
Thinking of finally switching from SC7.5 to DMC++... In the meantime can anyone tell me why

pointer = new char[size];

compiles without problem in SC but produces

error '?_P(unsigned, char *, int)'

when compiled in exactly the same context with DMC++.
Secondly the IDDE compiler setting 'enable new[] delete[] overloading' seems to toggle itself to 'off' during compilation even when it has been set to 'on'.
Thanks for any suggestions
Richard

July 27, 2003
"Richard M Thomas" <rthomas@mat.ethz.ch> wrote in message news:3F24025C.3060203@mat.ethz.ch...
> Thinking of finally switching from SC7.5 to DMC++... In the meantime can anyone tell me why
>
> pointer = new char[size];
>
> compiles without problem in SC but produces
>
> error '?_P(unsigned, char *, int)'
>
> when compiled in exactly the same context with DMC++.

Can you post a complete example? Thanks!


July 28, 2003
Thanks for the response Walter.
I've seen the same error before and given up on it. The present occurence appears in a DIB handling class that I 'lifted' and was originally written in VC, I believe. Not sure how much code you need - there's more if you want it - just the offending function for now.
--
Cheers
Richard

(header ...
LPBITMAPINFOHEADER m_lpBMIH; )

CDib::CDib(CSize size, int nBitCount)
{
        m_hFile = NULL;
        m_hBitmap = NULL;
        m_hPalette = NULL;
        m_nBmihAlloc = m_nImageAlloc = noAlloc;
        Empty();
        ComputePaletteSize(nBitCount);
        m_lpBMIH = (LPBITMAPINFOHEADER) new
                char[sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries];
//-->ERROR
        m_nBmihAlloc = crtAlloc;
        m_lpBMIH->biSize = sizeof(BITMAPINFOHEADER);
        m_lpBMIH->biWidth = size.cx;
        m_lpBMIH->biHeight = size.cy;
        m_lpBMIH->biPlanes = 1;
        m_lpBMIH->biBitCount = nBitCount;
        m_lpBMIH->biCompression = BI_RGB;
        m_lpBMIH->biSizeImage = 0;
        m_lpBMIH->biXPelsPerMeter = 0;
        m_lpBMIH->biYPelsPerMeter = 0;
        m_lpBMIH->biClrUsed = m_nColorTableEntries;
        m_lpBMIH->biClrImportant = m_nColorTableEntries;
        ComputeMetrics();
        memset(m_lpvColorTable, 0, sizeof(RGBQUAD) * m_nColorTableEntries);
        m_lpImage = NULL;  // no data yet
}

July 29, 2003
I need enough to be able to compile it and reproduce the error message. Thanks, -Walter

BTW, what memory model are you using?

"Richard M Thomas" <rthomas@mat.ethz.ch> wrote in message news:3F25935A.9060500@mat.ethz.ch...
> Thanks for the response Walter.
> I've seen the same error before and given up on it. The present
> occurence appears in a DIB handling class that I 'lifted' and was
> originally written in VC, I believe. Not sure how much code you need -
> there's more if you want it - just the offending function for now.
> --
> Cheers
> Richard
>
> (header ...
> LPBITMAPINFOHEADER m_lpBMIH; )
>
> CDib::CDib(CSize size, int nBitCount)
> {
>          m_hFile = NULL;
>          m_hBitmap = NULL;
>          m_hPalette = NULL;
>          m_nBmihAlloc = m_nImageAlloc = noAlloc;
>          Empty();
>          ComputePaletteSize(nBitCount);
>          m_lpBMIH = (LPBITMAPINFOHEADER) new
>                  char[sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) *
> m_nColorTableEntries];
> //-->ERROR
>          m_nBmihAlloc = crtAlloc;
>          m_lpBMIH->biSize = sizeof(BITMAPINFOHEADER);
>          m_lpBMIH->biWidth = size.cx;
>          m_lpBMIH->biHeight = size.cy;
>          m_lpBMIH->biPlanes = 1;
>          m_lpBMIH->biBitCount = nBitCount;
>          m_lpBMIH->biCompression = BI_RGB;
>          m_lpBMIH->biSizeImage = 0;
>          m_lpBMIH->biXPelsPerMeter = 0;
>          m_lpBMIH->biYPelsPerMeter = 0;
>          m_lpBMIH->biClrUsed = m_nColorTableEntries;
>          m_lpBMIH->biClrImportant = m_nColorTableEntries;
>          ComputeMetrics();
>          memset(m_lpvColorTable, 0, sizeof(RGBQUAD) *
m_nColorTableEntries);
>          m_lpImage = NULL;  // no data yet
> }
>


July 30, 2003
Thanks again Walter. The current version of the problem I'm having appears in an SDI project I'm working on and I'd like to stay in context. The code below produces the error when dropped as a class into a framework SDI project in DMC++ but compiles normally in SC7.5. I've come across the same error when trying to compile parts of 'Numerical Recipes in C++' - presumably when the compiler hits one of its allocation routines. Hope I'm not missing something....
All the best
Richard

+++
//(test.h)
class Test : public CObject
{
private:
    char* pointer;
public:
    Test(int size);
};

//(test.cpp)
#include "stdafx.h"
#include "test.h"

Test::Test(int size)
{
    pointer =  new char[size];
}
+++

July 31, 2003
Thanks, I can take it from here. -Walter