Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Variables suddenly disappering (C programming)

  1. Jun 18, 2011 #1
    Hi, I have an array that is partially disappearing from one line of code to the next and I don't have idea what could be causing this. The pseudocode of the relevant chunk of code goes like this:

    declare some 3d-dynamic arrays
    allocate memory for the arrays
    assign values to the elements in the arrays
    do something unrelated to the variables in the arrays
    do something related to the variables in the arrays

    when I run the code I get a segmentation fault, when I checked with gdb what was causing this segmentation fault I realised that some elements in one of the arrays were lost, i.e. when printing the value of the variable in gdb the output was "Cannot acces memory at address 0xa3a5b30acffdce5a".

    Then I looked more carefully for the problem and I found this:

    (gdb) n
    260 generate_powers_b_c(powers_b_c, powers_b_c_perm, alpha, alpha, p.lambdaD, edim, edim);
    (gdb) n
    261 generate_powers_a_b_lambda(powers_a_b_lambda, alpha, alpha, p.lambdaD, edim, edim);
    (gdb) p powers_b_c[1][2][2]
    $31 = 10509.453369140625
    (gdb) n
    262 generate_powers_a_c_lambda(powers_a_c_lambda, powers_a_c_lambda_perm, alpha, alpha, p.lambdaD, edim, edim);
    (gdb) p powers_b_c[1][2][2]
    $32 = 10509.453369140625
    (gdb) n
    263 generate_powers_b_c_lambda(powers_b_c_lambda, powers_b_c_lambda_perm, alpha, alpha, p.lambdaD, edim, edim);
    (gdb) p powers_b_c[1][2][2]
    $33 = 10509.453369140625
    (gdb) n
    267 for( bra = 0; bra < dim; bra++){
    (gdb) p powers_b_c[1][2][2]
    Cannot access memory at address 0xa3a5b30acffdce5a


    powers_b_c, powers_b_c_perm, powers_a_b_lambda, powers_a_c_lambda, powers_a_c_lambda_perm, powers_b_c_lambda, powers_b_c_lambda_perm

    are 3-dimensional dynamic arrays.

    As can be seen, the value of powers_b_c[1][2][2] is lost as soon as line 263 is executed. It can also be seen that there's no apparent way in which powers_b_c is modified in line 263. The same happens with several elements of all the arrays, there are some elements that don't disappear but instead change their values.

    At first I thought it could be due to insufficient memory in my laptop but according to "top" at this stage the program has used less than 0.8% of the total memory.

    I don't have a clue about what could be causing this.

    If anyone wants further information about the problem or if I was unclear please let me know.

    Thanks in advance.
  2. jcsd
  3. Jun 18, 2011 #2
    You seem to have a similar problem with this. Although I can't say for sure without the code.
  4. Jun 18, 2011 #3
    Thanks for the immediate reply!

    It sure looks like my problem. I just finished checking that I have all the declarations and function prototypes right. :(

    By the way, can you use an undeclared variable in C?!
  5. Jun 18, 2011 #4
    Aha! I found it, there was an error in the memory allocation. Thanks Grieverheart! you pointed me in the right direction.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook