Forums before death by AOL, social media and spammers... "We can't have nice things"
|    comp.lang.fortran    |    Putting John Backus on a giant pedestal    |    5,127 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 4,526 of 5,127    |
|    GianLuigi Piacentini to All    |
|    A question on reallocation    |
|    15 Nov 23 19:40:00    |
      From: ggpiace@tin.it              Hi all,              I have a perhaps silly question, that puzzles me before committing to       write actual code.              Please consider a data structure which is basically an array of arrays       type element        integer, allocatable :: element_core(:)       end type       ...       type(elements), allocatable :: array_of_elements(:)       ...       allocate ( array_of_elements(some_size) )              (this is not a matrix, each element may significantly differ in size,       and someone may be long (and subjected to reallocation cycles, but his       is plain reallocation).              Now I have to increase size of previously allocated array_of_elements,       using the usual pattern (at least I think it's usual)              type(elements), allocatable :: tmp(:)              allocate ( tmp(new_size) )       tmp(1:some_size) = array_of_elements ! ***       call move_alloc(from = tmp, to = array_of_elements)              Seems to me that during the operation marked with the *** comment the       various elements are also copied, and this seems vasteful.       Is there a way to avoid such copying, if it really happens ?              Perhaps making array_of_elements an array of pointers to allocated       elements ?              Thanks in advance       Gigi Piacentini              --- SoupGate-Win32 v1.05        * Origin: you cannot sedate... all the things you hate (1:229/2)    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca