Just nu i M3-nätverket
Jump to content

kan man skarva ihop två minnesytor?


vlise

Recommended Posts

Har ett litet problem här..

säg att jag har skapat ett fält med pekare där varje pekare pekar på ett alkolerat minne, typ.

 

char *array[2];

const int bufsize = 1024; //storleken på det alkollerade minnet

 

for(int i = 0; i < 2; i++)

{

array = new char[bufsize];

}

 

Jag skulle nu vilja kunna skarva ihop dessa två minnesytor typ som när man adderar strängar.

Jag skulle alltså vilja att den totala minnesstorleken nu ska vara 2048 (1024+1024). Alltså, jag vill sammtidigt ha kvar innehållet från minnesyta 1 och 2 i den nya minnesytan 3.

 

Finns det nått sätt att gör detta?

 

[inlägget ändrat 2009-06-17 13:35:04 av vlise]

Link to comment
Share on other sites

  • 2 weeks later...

Hoppas att jag förstod din fråga rätt och att jag gett ett bra svar:

 

 

char *array[2];

const int bufsize = 1024; // Storleken på det allokerade minnet

 

for(int i = 0; i < 2; i++)

array = new char[bufsize];

 

char *mergedArray = new char[2*bufsize];

for(int i = 0; i < 2 * bufsize; i++)

mergedArray = array[i / bufsize][i % bufsize];

 

 

Datan i båda vektorerna kopieras till en ny vektor.

[inlägget ändrat 2009-06-26 17:21:44 av Vitdom]

Link to comment
Share on other sites

Jo du har förstått min fråga rätt...

men jag har en fråga där du gör mergeArray[].

 

Varför mergeArray = array[i / bufsize][i % bufsize];

vad händer egentligen i det rödmarkerade? du delar först element i med bufsize men vad händer sen? % betyder väl att "resten" av divisionen?

 

 

Link to comment
Share on other sites

Jo du har förstått min fråga rätt...

men jag har en fråga där du gör mergeArray[].

 

Varför mergeArray = array[i / bufsize][i % bufsize];

vad händer egentligen i det rödmarkerade? du delar först element i med bufsize men vad händer sen? % betyder väl att "resten" av divisionen?

 

array[i / bufsize][i % bufsize]

 

i / bufsize är vilket minnessegment som ska kopieras ifrån, 0 eller 1 i detta fall. T.ex om minnespositionen 600 ska kopieras så blir det 600 / 1024 och eftersom att båda är heltal så blir resultatet 0, alltså ligger minnet som vi vill kopiera i minnessegment 0; vill vi att minnespositionen 1500 ska kopieras så kan man räkna ut att det ligger i minnessegmentet 1500 / 1024 = 1.

 

i % bufsize är minnets offset inom minnessegmentet. Låt oss säga att vi vill kopiera minnespositionen 700, 700 / 1024 = 0(segment), 700 % 1024 = 700(offset inom segmentet). Ett exempel till, 1800 / 1024 = 1, 1800 % 1024 = 776, alltså ligger minnespositionen 1800 i array[1][776].

[inlägget ändrat 2009-06-27 15:59:18 av Vitdom]

Link to comment
Share on other sites

Ok det låter lite klurigt att lista ut själv..men tack så mycket för hjälpen=)

Ska klura lite på det, men jag blev lite klokare iaf.

danke

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...