RE: [GD-Windows] Function to see if a pointer is on the stack
Brought to you by:
vexxed72
From: Jon W. <hp...@mi...> - 2004-08-19 17:21:04
|
The most reliable way of doing this is to use a class for your argument rather than bare pointers, and have a constructor from bare pointers, and use reference counting in the class implementation -- this is almost exactly what std::string<> already does for you! Else, you can register the stack pointer in main() (or the entry function for each thread/fiber), and get the stack pointer in the called function, and compare -- this is not entirely portable, because the stack may grow up on some architectures. // non-threaded version -- if you use threads or fibers, // you need one gBase per thread/fiber char * gBase; void register_main( char * base ) { gBase = base; } bool is_stack_pointer( char const * ptr ) { char top[10]; assert( top < gBase ); // else stack grows up return (ptr < gBase) && (ptr > top); } int main() { ... char junk[ 10 ]; register_main( junk ); ... } void some_func( char * anArg ) { if( is_stack_pointer( anArg ) ) { ... } } -----Original Message----- From: gam...@li... [mailto:gam...@li...]On Behalf Of Jacob Turner (Core Design Ltd) Sent: Thursday, August 19, 2004 9:30 AM To: gam...@li... Subject: [GD-Windows] Function to see if a pointer is on the stack Is there some simple and reliable code for a console or windows app to test if a pointer value is on the stack or not ? If the pointer is on the stack (e.g. a string) then we want to copy the string to heap memory for reuse later on. Cheers Jake ------------------------------------------------------- SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media 100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33 Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift. http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285 _______________________________________________ Gamedevlists-windows mailing list Gam...@li... https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows Archives: http://sourceforge.net/mailarchive/forum.php?forum_idU5 |