c++ - Reseting the state of all global variables in a program
I want to re-initialise all global variables defined in a program. Is there any method for doing this ?? Reasons are, I have some third party routines which I have adapted to be called from my program. However, when I call these routines for a second time, the results are incorrect because the global variables are not initialised. I don't want to tamper with the routines too much. There's lots of global variables... Any ideas ???
Apr 16 2003
"jim p" <x y.com> wrote in message news:b7k7ts$1sua$1 digitaldaemon.com...I want to re-initialise all global variables defined in a program. Is there any method for doing this ?? Reasons are, I have some third party routines which I have adapted to be called from my program. However, when I call these routines for a second time, the results are incorrect because the global variables are not initialised. I don't want to tamper with the routines too much. There's lots of global variables... Any ideas ???Put a variable at the beginning and the end of the global data segment. That'll give you two pointers bracketing it, upon which you can save/restore the contents. Watch out for the BSS segment. You'll need to verify it's right by checking the .map file. Note that doing these kind of kludges could get you fired from most companies <g>.
Apr 16 2003
Cheers Walter. Excuse my ignorance, but how do I save/restore the contents and what is the BSS segment ?? "Walter" <walter digitalmars.com> wrote in message news:b7kah0$29b0$1 digitaldaemon.com..."jim p" <x y.com> wrote in message news:b7k7ts$1sua$1 digitaldaemon.com...save/restoreI want to re-initialise all global variables defined in a program. Is there any method for doing this ?? Reasons are, I have some third party routines which I have adapted to be called from my program. However, when I call these routines for a second time, the results are incorrect because the global variables are not initialised. I don't want to tamper with the routines too much. There's lots of global variables... Any ideas ???Put a variable at the beginning and the end of the global data segment. That'll give you two pointers bracketing it, upon which you canthe contents. Watch out for the BSS segment. You'll need to verify it's right by checking the .map file. Note that doing these kind of kludges could get you fired from most companies <g>.
Apr 16 2003
"jim p" <x y.com> wrote in message news:b7kb4j$2a77$1 digitaldaemon.com...Cheers Walter. Excuse my ignorance, but how do I save/restore the contentschar *pstart = &start; char *pend = &end; char *backup = (char*) malloc(pend - pstart); memcpy(backup, pstart, pend - pstart); to restore: memcpy(pstart, backup, pend - pstart);and what is the BSS segment ??BSS is where all the 0 initialized data goes. Check out the .map file!
Apr 16 2003
ok, its all in place. I'm still not sure about the BSS segment. I see it in the map file, but I'm not sure what to look for, with regards to it being OK James "Walter" <walter digitalmars.com> wrote in message news:b7kf9c$2df6$1 digitaldaemon.com..."jim p" <x y.com> wrote in message news:b7kb4j$2a77$1 digitaldaemon.com...Cheers Walter. Excuse my ignorance, but how do I save/restore the contentschar *pstart = &start; char *pend = &end; char *backup = (char*) malloc(pend - pstart); memcpy(backup, pstart, pend - pstart); to restore: memcpy(pstart, backup, pend - pstart);and what is the BSS segment ??BSS is where all the 0 initialized data goes. Check out the .map file!
Apr 16 2003
Data in the BSS segment does not occupy space in the exe file, it's just allocated by the loader and set to 0. "jim p" <x y.com> wrote in message news:b7kos7$2khr$1 digitaldaemon.com...ok, its all in place. I'm still not sure about the BSS segment. I see it in the map file, but I'm not sure what to look for, with regardstoit being OK James "Walter" <walter digitalmars.com> wrote in message news:b7kf9c$2df6$1 digitaldaemon.com...news:b7kb4j$2a77$1 digitaldaemon.com..."jim p" <x y.com> wrote in messageCheers Walter. Excuse my ignorance, but how do I save/restore the contentschar *pstart = &start; char *pend = &end; char *backup = (char*) malloc(pend - pstart); memcpy(backup, pstart, pend - pstart); to restore: memcpy(pstart, backup, pend - pstart);and what is the BSS segment ??BSS is where all the 0 initialized data goes. Check out the .map file!
Apr 17 2003
ok, but how do I check its 'right' ? "Walter" <walter digitalmars.com> wrote in message news:b7llhm$5v3$1 digitaldaemon.com...Data in the BSS segment does not occupy space in the exe file, it's just allocated by the loader and set to 0. "jim p" <x y.com> wrote in message news:b7kos7$2khr$1 digitaldaemon.com...regardsok, its all in place. I'm still not sure about the BSS segment. I see it in the map file, but I'm not sure what to look for, withtoit being OK James "Walter" <walter digitalmars.com> wrote in message news:b7kf9c$2df6$1 digitaldaemon.com...news:b7kb4j$2a77$1 digitaldaemon.com..."jim p" <x y.com> wrote in messageCheers Walter. Excuse my ignorance, but how do I save/restore the contentschar *pstart = &start; char *pend = &end; char *backup = (char*) malloc(pend - pstart); memcpy(backup, pstart, pend - pstart); to restore: memcpy(pstart, backup, pend - pstart);and what is the BSS segment ??BSS is where all the 0 initialized data goes. Check out the .map file!
Apr 17 2003
Check that you are saving and restoring the data in it. "jim p" <x y.com> wrote in message news:b7lret$9ts$1 digitaldaemon.com...ok, but how do I check its 'right' ? "Walter" <walter digitalmars.com> wrote in message news:b7llhm$5v3$1 digitaldaemon.com...news:b7kos7$2khr$1 digitaldaemon.com...Data in the BSS segment does not occupy space in the exe file, it's just allocated by the loader and set to 0. "jim p" <x y.com> wrote in messagefile!regardsok, its all in place. I'm still not sure about the BSS segment. I see it in the map file, but I'm not sure what to look for, withtoit being OK James "Walter" <walter digitalmars.com> wrote in message news:b7kf9c$2df6$1 digitaldaemon.com...news:b7kb4j$2a77$1 digitaldaemon.com..."jim p" <x y.com> wrote in messageCheers Walter. Excuse my ignorance, but how do I save/restore the contentschar *pstart = &start; char *pend = &end; char *backup = (char*) malloc(pend - pstart); memcpy(backup, pstart, pend - pstart); to restore: memcpy(pstart, backup, pend - pstart);and what is the BSS segment ??BSS is where all the 0 initialized data goes. Check out the .map
Apr 17 2003