infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Coriu Radu Gabriel - UPB din Iulie 05, 2006, 19:40:11



Titlul: Adrese de memorie atribuite pointerilor
Scris de: Coriu Radu Gabriel - UPB din Iulie 05, 2006, 19:40:11
Salut tuturor!
Tocmai am invatat pointerii din c++ si ma intrebam cum pot sa le atribui o adresa propriu-zisa de memorie (0x0000:0x046c). Am facut o functie cu un for care schimba poiterul pe adresa dorita, dar nu prea merge cum doresc. Vreau ceva de genul MemL[$0000:$046c] din Pascal. Multumesc. Uitati functia facuta de mine  :-'
Cod:
void addr(char * p,int address)
{
 p = NULL;
 for (int i=1;i<=address;i++){
 //printf("%p \n",p);
 p++;
 /*if (i%50==0) {
 cout<<"*** \n";
 getch();
 }*/
 }
}

Si as mai dori sa pot pune orice tip de pointer ca primul parametru al functiei, dar primesc eroare. Cum pot face asta?


Titlul: Raspuns: Adrese de memorie atribuite pointerilor
Scris de: Coriu Radu Gabriel - UPB din Iulie 06, 2006, 14:47:43
 :'( chiar nu shtie nimeni sau nu ati inteles ce vreau??  :sad: ...Sau ceva de genul

var i:longint absolute $0000:$046c

tot din pascal... :'(

PS: Am observat ca programul considera adresa 0x0001 ca fiind prima din cea alocata lui, deci nu din ram. !?!


Titlul: Raspuns: Adrese de memorie atribuite pointerilor
Scris de: Dan-Leonard Crestez din Iulie 07, 2006, 13:11:19
Ii zice casting, ceva de genul:
  ptr = (void *)intval;

Mai ai un pic de invatat despre C/C++.


Titlul: Raspuns: Adrese de memorie atribuite pointerilor
Scris de: Coriu Radu Gabriel - UPB din Iulie 10, 2006, 18:26:38
 :yahoo: mersi mult! stiu ca mai am de invatat destul c++, dar chestia asta am facut-o in pascal si nu am gasit-o pt c++ niciunde...am cautat destul si l-am intrebat si pe un tip care e foarte tare la info si nu shtia...


Titlul: Raspuns: Adrese de memorie atribuite pointerilor
Scris de: Coriu Radu Gabriel - UPB din Iulie 10, 2006, 21:03:11
fluffy, ms inca o data, dar se pare ca tot nu merge cum trebuie... adresa cred ca este relativa fata de memoria alocata programului deoarece am incercat cu adresa 0x046c (ceasul sistemului) si valoarea nu se schimba.. si inca o chestie, am observat ca partea stanga a adresei (0x0000:0x046c) nu este definita cum mi-ai spus tu. ai vreo idee cum as putea sa o definesc? cred ca am incercat toate caracterele speciale si nu functioneaza pt chestia asta (in pascal pt chestia asta se folosesc : (0x0000:0x046c).


Titlul: Raspuns: Adrese de memorie atribuite pointerilor
Scris de: Mircea Pasoi din Iulie 10, 2006, 23:19:10
Foloseste "time.h" si functia clock() ca sa masori timpul de executie, chestia asta cu adrese nu e buna...totusi, daca tii neaparat, poti sa faci asa (in Borland C numai, pe GCC nu cred ca merge):

Cod:
#include <dos.h>
void main(void){
long i=0,t,*time=(long*)MK_FP(0,0x46C);
t=*time;
while (*time-t<182) i++;
}