Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
Announcements
Welcome to the Intel Community. If you get an answer you like, please mark it as an Accepted Solution to help others. Thank you!
For the latest information on Intel’s response to the Log4j/Log4Shell vulnerability, please see Intel-SA-00646

memory allocation

kolber__Michael
New Contributor I
190 Views

When  using move_alloc and allocate as below is there a way to initialize memory so that you do not get random garbage in the locations beyond what gets filled in the copy process?

 

 a$s%num_funds = a$s%num_funds + 1

call move_alloc(a$s%fund, t_fund)
allocate(a$s%fund(a$s%num_funds))
a$s%fund(1:a$s%num_funds - 1) = t_fund(1:a$s%num_funds - 1)

Thanks.

Michael

0 Kudos
2 Replies
Steve_Lionel
Black Belt Retired Employee
185 Views

MOVE_ALLOC isn't relevant here. If the array you are allocating is of a derived type, you can specify initial values for the components of that type.  There is an option, /Qinit:zero,arrays , that will initialize allocated arrays of intrinsic type to zero, but I don't recommend its use.

In a situation such as this, I suggest adding code to explicitly initialize the unused element(s) if you depend on them being in a specific state later.

JohnNichols
Valued Contributor II
164 Views

In May 1978 using a Daemon computer and punch cards the old grouch who taught us Fortran said - always initialize variables -- but back then no one used implicit none 

Reply