akm@geriatrix.cs.uoregon.edu (Anant Kartik Mithal) (03/23/91)
Hi,
a question about pointers as function parameters. Given that windows
can move code/data around in memory (I believe that is correct), is
it okay (or is it not okay) to pass pointers as the arguments to a
function? What I want to do is to have a function set the values of a
couple of variables (boring sort of stuff), but I am not sure that I
can pass the variables through pointers to the setting function. eg:
void CallerFunction ()
{
int x, y;
SetValue(&x, &y)
.
.
}
void SetValue(x, y)
int *x, *y;
{
*x = 10;
*y = 20;
}
thanks in advance,
kartik
--
Anant Kartik Mithal akm@cs.uoregon.edu
Research Assistant, (503)346-4408 (msgs)
Department of Computer Science, (503)346-3989 (direct)
University of Oregon, Eugene, OR 97403-1202richardh@hpopd.pwd.hp.com (Richard Hancock) (03/26/91)
/ hpopd:comp.os.msdos.apps / akm@geriatrix.cs.uoregon.edu (Anant Kartik Mithal) / 6:55 pm Mar 22, 1991 / Hi, > a question about pointers as function parameters. Given that windows > can move code/data around in memory (I believe that is correct), is > it okay (or is it not okay) to pass pointers as the arguments to a > function? What I want to do is to have a function set the values of a > couple of variables (boring sort of stuff), but I am not sure that I > can pass the variables through pointers to the setting function. eg: You shouldn't ASSUME that your DS will never change (though I suspect that in never will in protected mode). Therefore you shouldn't keep hold of a far pointer to a variable in your DS across any call which might cause your DS to move (eg. a GlobalAlloc() call). Having said that, I seem to remember that Windows locks your DS when it calls your WndProc. Summary : only pass near pointers; if you do eventually need them as far pointers simply cast them when you need to use them. Richard.