Fortran Fortran90 issue: nonzero out of bounds array elements

AI Thread Summary
The discussion revolves around an issue with Fortran90 where an undefined array element, C(-3,1), appears to produce similar output to a defined element, C(-2,1), despite not being initialized. The user has defined array bounds strictly but encounters unexpected behavior when plotting values. It is suggested that this anomaly may be related to memory management, indicating that accessing undefined memory can yield unpredictable results. Recommendations include using compiler flags to monitor array bounds at runtime to prevent such issues. Overall, the conversation highlights the importance of proper memory handling in programming.
ilvreth
Messages
33
Reaction score
0
Hi to all.

I am programing a new code for some calculation and i have detected a strange issue.
I have my all arrays strictly defined for example

real, dimension(-2:2,-3:2) A, B
complex, dimension(-2:2,1:2) C

In my time dependend calculations i expect the matrix element C(-2,1) to have a maximum value during the whole run, to be approximately about 1.5 and if you attempt the plot t vs C(-2,1) then the curve seems like a Gaussian.


While i use the ifort and gfortran compilers, i attempted an "experiment" to write the matrix element C(-3,1) (which is NOT defined anywhere initialy in my program... because i have complex, dimension(-2:2,1:2) C and not complex, dimension(-3:2,1:2) C)

The i i descovered that if i plot t vs C(-3,1) then the curve i get is a similar to t vs C(-2,1) which is completely strange because is not defined anywhere so i expect to have zero value every time.

I repeat, every array in my program has been defined bounds as i shown above.

How does it happen??
 
Technology news on Phys.org
A description of what is happening is nice, but it is better to have a look at your source code. There may be another issue which you have overlooked.

If you wish to post your source code, please use the
Code:
 tags.
 
Ok then, I just attempt another experiment which i resize the matrix C from (-2:2,1:2) to (-3:2,1:2) then run the code and you get zero C(-3,2) element. It is about how the memory works i guess. I think this is not a critical issue.
 
Yes, it is a memory thing...the truth is that you have no business with memory that you have not defined...for all we know, it is part of some other program running in your computer.

You should probably look into compiling flags to keep an eye on arrays at run time...something like arraybounds or checkarrays or something like that...then, when you run your program and attempt to access an index outside the defined range, the program will stop and let you know.
 
Dear Peeps I have posted a few questions about programing on this sectio of the PF forum. I want to ask you veterans how you folks learn program in assembly and about computer architecture for the x86 family. In addition to finish learning C, I am also reading the book From bits to Gates to C and Beyond. In the book, it uses the mini LC3 assembly language. I also have books on assembly programming and computer architecture. The few famous ones i have are Computer Organization and...
I have a quick questions. I am going through a book on C programming on my own. Afterwards, I plan to go through something call data structures and algorithms on my own also in C. I also need to learn C++, Matlab and for personal interest Haskell. For the two topic of data structures and algorithms, I understand there are standard ones across all programming languages. After learning it through C, what would be the biggest issue when trying to implement the same data...

Similar threads

Replies
11
Views
3K
Replies
11
Views
12K
Replies
18
Views
6K
Replies
2
Views
6K
Replies
5
Views
4K
Replies
4
Views
16K
Replies
2
Views
8K
Back
Top