Author Topic: Bug: Same code, same compiler (newest cygwin gcc) wrong result in Code::Blocks  (Read 492 times)

Offline Greedy_Lemon

  • Single posting newcomer
  • *
  • Posts: 2
Hey,

I am facing strange result after running in Code::Blocks the same code as in CLion (same compiler- newest cygwin gcc):
Code: [Select]
#include <stdio.h>

int main(void)
{
    char n1[100] = "Ala";

    char *p;
    for(p= n1; p < n1 + 10; p++)
        printf("Address: %p,  c: %c  d: (%d)\n", p, *p, *p);

    return 0;
}

In Code::Blocks result is probably wrong, 1 image. Second one is from CLion, the same compiler used and the result is the proper one (tested with friends).


Any indeas or suggestions? Thank you in advance.



Offline BlueHazzard

  • Developer
  • Lives here!
  • *****
  • Posts: 2842
codeblocks is not a compiler, so anything different on runtime is not caused by codeblocks, but by the compiler/runtime

I see no error in both outputs, just different memory initializations during runtime...

Offline huycan

  • Multiple posting newcomer
  • *
  • Posts: 26
Agreed. Nothing's wrong with the output. They're both correct. Just different memory location.

Offline BlueHazzard

  • Developer
  • Lives here!
  • *****
  • Posts: 2842
No, not only "location", but "initialization".
Location is hopefully always different on every run and on any system...
but also: unix systems (like cygwin is) seem to initialize memory with 0, at least if you make a debug build. Windows systems do not...

Offline sodev

  • Regular
  • ***
  • Posts: 403
Accessing uninitialized memory is undefined behavior so by definition every result is correct :D

Offline Greedy_Lemon

  • Single posting newcomer
  • *
  • Posts: 2
Ok, I understand now. Thank you very much for help  :)