|
Oh, I didn't realize! Thanks!
JennyP
|
|
|
|
|
I use this class in an app to format strings.
But, when I exit the app in debug mode, I see the strings that I formatted as memory leaks. What should I do to remove these memory leaks?
now the code looks like this:
void function()
{
std::strstream ostr;
ostr << "This is a test" << std::ends;
// i use the ostr
// i assumed that the cleanup would happen when function quits
// but when i quit the app, I can see the "This is a test" in object dump
}
modified 29-Aug-18 21:01pm.
|
|
|
|
|
Don't use strstream it is outdated now. use stringstream
Step back, rub your eyes, take a deep breath, stretch a bit, and reflect on the relative importance of CP, CG, the age / travel time sustained by supposedly 'fresh' cheese curds, and Life in General. - Shog9
|
|
|
|
|
Call
ostr.freeze(false);
Todd Smith
|
|
|
|
|
I have created a regular dll which export the function
__declspec(dllexport) BOOL Extract(PCLTextList *pList);
A create and pass to the dll the pList pointer from a Dialog Based application . When I call delete PList from this app an ASSERTION FAILED Error appears at this function:
_CrtIsValidHeapPointer
Does anyone know why?
Plese help if you can
Thanks
Jancsi
xxx
|
|
|
|
|
Correct me if i am wrong:
someone creates a list object , sends it to your dll and you fail to delete that object.
If that so, then check whether your run-time library and the caller run-time library are the same.
For example, if your run-time library is Multithread Dll (/MD) and the caller run-time library is Multithread (/Mt).
Check what happens when the caller's project and your project have the same run-time library.
Dudi
|
|
|
|
|
Dudi Avramov wrote:
Correct me if i am wrong:
someone creates a list object , sends it to your dll and you fail to delete that object.
If that so, then check whether your run-time library and the caller run-time library are the same.
For example, if your run-time library is Multithread Dll (/MD) and the caller run-time library is Multithread (/Mt).
Check what happens when the caller's project and your project have the same run-time library.
Uh, oh - this works only if both the .dll and the .exe use the same DLL-Version of the CRT. It will fail if they are linked against the static version.
The reason is the following: The CRT contains a heap manager, which implements operators new and delete. If you link the CRT statically to a module (.exe or .dll) the heap manager is also linked to your module, meaning that each module contains its own heap manager. It is not possible to allocate memory from one heap manager and delete it with another one - they don't know of each other and the memory just looks invalid to them. And this is what happens in your project.
However, if both, the .dll and the .exe are linked to the same DLL-Version of CRT, they share the same heap manager (because the CRT DLL is loaded only once into the process' address space). Then all ressources (memory, open file handles, etc.) are interchangeable between the modules.
To avoid this messy details it is common and good practise to destroy resources always in the same module they have been allocated. Then the used CRT version does not matter and you are always on the safe side
--
Daniel Lohmann
http://www.losoft.de
|
|
|
|
|
I'm developing in MFC on Win2k. It does fine at work, but when I took it home to XP,it debug asserted immediately! I was disgusted and didnt even start debugging to see where it crashes. SoI am thinking of getting another 80Gig hard drive and dual booting with XP and Win2K. I did load another MFC project developed on Win2K onto the XP and that one did fine. ANy ideas?
Thanks,
ns
|
|
|
|
|
find out where and why the assertion occurs.
-c
To explain Donald Knuth's relevance to computing is like explaining Paul's relevance to the Catholic Church. He isn't God, he isn't the Son of God, but he was sent by God to explain God to the masses. /. #3848917
|
|
|
|
|
Okay. so I'll put a breakpoint first in the apps initinstance, then if it goes through okay, in the mainframes init then the chids init then the views init etc I guess - since i iamgine thats the flow of things....ANy sugggestions about the debugging (I'm still feeling my way through this - crashes are terrifying!)Thanks very much for the response,
ns
|
|
|
|
|
just run the app in the debugger and let it hit the assert. when it does, press Retry and see where you end up.
-c
To explain Donald Knuth's relevance to computing is like explaining Paul's relevance to the Catholic Church. He isn't God, he isn't the Son of God, but he was sent by God to explain God to the masses. /. #3848917
|
|
|
|
|
I was just about to go buy a second HD to dual boot to win2K, anf thought I'd try "rebuild all" in a last desparate attempt. I almost fell out of my chair when it worked!
Whew!
Incidentally , doing retry on the assert just told me that VS was not happy, and did I want to send a report to MS. Then it went back to the place where I last left my cursor, so that gave me no hints as to the problem location...
Thank you so much though!
ns
|
|
|
|
|
ns wrote:
but when I took it home to XP,it debug asserted immediately! I was disgusted and didnt even start debugging to see where it crashes.
I'd like to be able to tell my boss that. "It doesn't work at all, I didn't even bother to start debugging"...
Best regards,
Alexandru Savescu
|
|
|
|
|
I'm studying in an Australian Education Center. They have Visual Studio .NET Enterprise Architect installed. I've heard a rumor about apps compiled with VS carrying a digital signature with the product ID of VS IDE. Is this true? So, if I use this copy to build an app, and try to sell it on the web, would I get into to trouble? Especially, since I don't own this copy?
Would I be off the hook, if I make it a freeware?
|
|
|
|
|
sounds like you should ask the AEC, or find out what their license says.
-c
To explain Donald Knuth's relevance to computing is like explaining Paul's relevance to the Catholic Church. He isn't God, he isn't the Son of God, but he was sent by God to explain God to the masses. /. #3848917
|
|
|
|
|
Hi there,
I loaded menu from my project resource …
I have not problem in loading or displaying this menu …
But when I want to add new item to loaded menu … my code don't works !
CMenu menu;
menu.LoadMenu(IDR_MENU1);
.
.
.
menu.AppendMenu(MF_SEPARATOR);
// Display menu …
What's wrong ?
My month article: Game programming by DirectX by Lan Mader.
Please visit in: www.geocities.com/hadi_rezaie/index.html
Hadi Rezaie
|
|
|
|
|
try adding your items like this:
CMenu* pPopup = menu.GetSubMenu(0);
pPopup->AppendMenu(...)
this is how i do it for all my context menus.
-c
To explain Donald Knuth's relevance to computing is like explaining Paul's relevance to the Catholic Church. He isn't God, he isn't the Son of God, but he was sent by God to explain God to the masses. /. #3848917
|
|
|
|
|
Hi Chris !!!
Thanks alot for your helps
My month article: Game programming by DirectX by Lan Mader.
Please visit in: www.geocities.com/hadi_rezaie/index.html
Hadi Rezaie
|
|
|
|
|
Okidoki, probably another question asked 100 times. I'm looking into C++ for maybe some game developement. If there is a good book that teaches C++ with a bias towards games, then it would be even better. If not, I'd rather have a good solid book on C++ than one that's diluted between C++ and game developement. I'd get books on game developement later. Thx!
p.s.: my background is web programming so I'm not that knowledgeable in OO and Windows/consoles programming.
|
|
|
|
|
There is no single book that will make you proficient at C++. There are any number of introductory books which will get you up and running.
But to trully understand the language you need to read (and understand) Stroustrup's "The C++ Programming Language" and Scott Meyer's "Effective C++" and "More effective C++". I would also recommend Eckels "Thinking in C++".
"Human imagination has been sculpted by the universe within which it was born" Hmmmm...
|
|
|
|
|
How To Program C++ - Deitel & Deitel
Kuphryn
|
|
|
|
|
C++ For Dummies did the job for me well.
|
|
|
|
|
Secrets of the game programming gurus is a good one for gaming, and for C++, it depends - C++ in 24 hours or C++ for dummies, if you're a dummy. Otherwise, the Stroustup books are obviously good.
Christian
come on all you MS suckups, defend your sugar-daddy now. - Chris Losinger - 11/07/2002
|
|
|
|
|
I want to know if i want to pass a COM object in a method of a COM in the parameter list. Is it just pass the IDispatch interface pointer ?
Can anyone show me examples ?
I've a SerMessage COM and a SerConnection COM. In SerConnection's SendQMessage(), it has to pass in SerMessage
|
|
|
|
|
Send it as an IUnknown, then you can call IUnknown::QueryInterface() on the IUnknown pointer, and get a pointer to the COM Object...
- Anders
Money talks, but all mine ever says is "Goodbye!"
|
|
|
|