dynamiczne alokowanie pamięci w DLL

0

Cześć,
Na wstępie zaznaczę, że dopiero uczę się WinApi więc proszę o wyrozumiałość :).
Chciałbym zrobić sobie funkcję w DLL-u w której to, na potrzeby tej funkcji, chcę stworzyć sobie tablicę dwuwymiarową o rozmiarach przesłanych w parametrach funkcji.
W tym celu w funkcji muszę zdefiniować sobie odpowiedni wskaźnik np. double **wsk; i na jego podstawie przy pomocy operatora new stworzyć interesującą mnie tablicę. Oczywiście przed zakończeniem funkcji muszę pamiętać o jej usunięciu (operatorem delete).

Teraz, ową dll-kę chciałbym wykorzystać np. w kilku programach, które mogą działać jednocześnie.

I teraz mam pytanie: czy jeśli dwa programy będą korzystać z tej samej funkcji to czy w obu wywołaniach tej funkcji zmienna wsk będzie pokazywać na ten sam fragment pamięci?
Tzn. czy zmienna wsk przy każdym wywołaniu takiej funkcji będzie pokazywać na wolne miejsce w pamięci czy na jakieś stałe - dla każdego programu takie samo?
Czytałem, że program robi sobie jakieś kopie tych funkcji i trochę mnie to martwi...
pozdrawiam

0

Prosto i ogólnie mówiąc: Każdy program, który używa danej biblioteki, wykorzystuje osobne, własne dane (tzn. te całkiem swoje i te, które wykorzystuje biblioteka). Wspólny jest kod. Twój wskaźnik będzie wskazywał na całkowicie różne miejsca pamięci. Oczywiście dotyczy to sytuacji, w której nie używasz pamięci współdzielonej. Poczytaj o niej, bo to jest to, o co pewnie Ci chodzi.

0

Ja jeszcze dodam, że nawet jeśli wskaźniki będą w dwóch procesach liczbowo identyczne, to (o ile nie wskazują na pamięć współdzieloną) mimo to mogą wskazywać na zupełnie różne komórki pamięci. Spowodowane to jest istnieniem mechanizmu stronicowania pamięci.

0

Dzięki wielki Panowie za wyjaśnienie!
Wielka ulga :)
pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1