|
The problem you describe could also be seen as a design problem, not an implementation problem.
Instead of the list taking care of destruction (and therefore passing ownership sometimes but not always), let the list elements take care of destruction and clean up them selfs. You could populate the list with a smart pointer that knows what to do, i.e. boost shared pointer[^]. So when you remove one (or many) entries the destructor of the shared pointer will take care of clean up, e.g. call delete for elements created on the heap.
However, generally I would not mix heap and stack and rather create all elements dynamically. Just saves you a lot of trouble and ownership will be crystal clear.
/M
|
|
|
|
|
If I remember my history correctly, a certain bit is set on all dynamically allocated memory? I believe that dynamic allocation maps into your address space at a certain starting address, and you can see if you are above that address.
I am pretty certain that there is a bit that is set for all addresses used for heap allocations.
But as others have said, there is some other problem in how your list is designed or being used.
Peace!
-=- James Please rate this message - let me know if I helped or not!<hr></hr> If you think it costs a lot to do it right, just wait until you find out how much it costs to do it wrong! Remember that Professional Driver on Closed Course does not mean your Dumb Ass on a Public Road! See DeleteFXPFiles
|
|
|
|
|
James R. Twine wrote: I am pretty certain that there is a bit that is set for all addresses used for heap allocations.
I would like to know more about this bit settings. Can give some more explanation or give me some like that explains this...
Thanks
|
|
|
|
|
It's a strange question. But here's how it can be done:
#include "stdafx.h"
#include <iostream>
#include <windows.h>
using namespace std;
bool IsOnStack(const void *pData)
{
DWORD StackBase;
DWORD StackLimit;
__asm
{
MOV EAX, DWORD PTR FS:[0x04]
MOV StackBase, EAX
MOV EAX, DWORD PTR FS:[0x08]
MOV StackLimit, EAX
}
DWORD Address = reinterpret_cast<DWORD>(pData);
return (Address >= StackLimit) && (Address < StackBase);
}
const char* PrintStack(const void *pData)
{
return IsOnStack(pData) ? ": Stack" : ": Not on Stack";
}
int main(int argc, char* argv[])
{
const char *pString1 = "String1";
cout << pString1 << PrintStack(pString1) << endl;
char String2[] = "String2";
cout << String2 << PrintStack(String2) << endl;
return 0;
}
Output is:
String1: Not on Stack
String2: Stack
Steve
|
|
|
|
|
Hello,
is there any possibility available to get the projectname during the compiletime? I need the projectname as string...
Best regards
Hansjörg
|
|
|
|
|
Can you more explain Im not sure you need to GetModuleBaseName or no?
|
|
|
|
|
1) Get the value of project name from the project property
if you are using VS2005,
vsproperty->c/c++->preprocessor->preprocessor definitions: PROJECT_NAME=$(ProjectName)
2) Now use the PROJECT_NAME Macro from above in your code,
#define STRINGIZE(_x) #_x
#define STRINGIZEVALUE(_x) STRINGIZE(_x)
char projectName[]= STRINGIZEVALUE(PROJECT_NAME);
|
|
|
|
|
Rajkumar R wrote: #define STRINGIZE(_x) #_x
#define STRINGIZEVALUE(_x) STRINGIZE(_x)
Clever.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
hi friends
How to calculate system measurement like When i was ON my PC my application run automatically calculate system time how to do it ?please give your suggestion.
Thanks and Regards
Nisha.S
|
|
|
|
|
Your query is not too much clear to me. I think you want to display the time for which your application has been runnning. So, when your application starts do a GetSystemTime() and store the values in some variable. Later you can again do a GetSystemTime() and calculate the difference.
In essesnce you must state your problem more clearly if you expect to the point solution from CP members.
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
k..currently i create one tool
i want to create "Total usage of System time"
1. When the user logging him/her PC at that time my application counting the
time(it means running hours)
2. Suppose When user shut down or log off at that time my application close
close the time finally it will return total no of calculating system
hours. This is my tool ...give the procedure how i can start that project
or send me some URLs please..
Regards
Nisha.S
|
|
|
|
|
To run as a user process you have to add its path in registry. Copy the following and make a file named setup.reg:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"AnyName"="C:\\Program Files\\YourAppFolder\\YourApp.exe"
and run it. Don't forget to edit to match your application.
To run as ser5vice look at this article:
http://www.codeproject.com/KB/system/xyntservice.aspx[^]
Now the second part - how to calculate time:
Its easy use GetSystemTime API
http://msdn2.microsoft.com/en-us/library/ms724390.aspx[^]
|
|
|
|
|
Are you needing to know how long the computer was up and running? I mean - the time elapsed between boot and shut down? In that case, GetSystemTime is not what you need. Google for Find windows uptime[^]
Nobody can give you wiser advice than yourself. - Cicero
.·´¯`·->Rajesh<-·´¯`·.
Codeproject.com: Visual C++ MVP
|
|
|
|
|
Do you need to GetProcessTimes ?
|
|
|
|
|
thanks 2 your replays..
yes hamid i need get process time calculation ....
By
Nisha.S
|
|
|
|
|
|
Im writing a registration database program in C++ that :
Allows the user to enter prompted information in a struct, the user then has the choice of performing the menu options such as adding a student, deleting, lookup a student, add course, etc. At any time the user should be able to view the existing student files.
How do save the student information to an Outfile that can be accessed.
Do I put outfile code in every function???
I'm lost. Can provide code if needed.
|
|
|
|
|
Does outfile mean a text file ? Use iostreams, ofstream to be precise. You can write a handler for << and just stream the objects directly, it's very nice.
Christian Graus
Please read this if you don't understand the answer I've given you
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
Do you want o write your values toa file?
|
|
|
|
|
It appears to me that Serialization[^] is what you're in need of.
Nobody can give you wiser advice than yourself. - Cicero
.·´¯`·->Rajesh<-·´¯`·.
Codeproject.com: Visual C++ MVP
|
|
|
|
|
dajones05 wrote: How do save the student information to an Outfile that can be accessed.
Do I put outfile code in every function???
It sounds as though you are putting the cart before the horse. Do you know how to read from and write to a file? Do you know how to get input from the user? Do you know how to interact with a database via code?
"Love people and use things, not love things and use people." - Unknown
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
How to convert the Multibyte local windows code files to Unicode format file?
Which API can I call?
|
|
|
|
|
Jeem Ge wrote: Which API can I call?
MultiByteToWideChar()
|
|
|
|
|
|
Best Regards to Naveen and Hamid, I see.
Thanks
|
|
|
|