Memory corruption?

Go4Expert Member
15Nov2011,14:32   #1
priyatendulkar's Avatar
Hi,

Consider ,the following code

unsigned int num =10;
unsigned int * ptr = #

however,When i look into ptr ,the address stored in "ptr" IS NOT EQUAL to the ADDRESS of num..

I know this seems to be strange,but this is what I have obsreved..
Is this any kind of memory corruption or some known issue wich I may not be aware of?
Go4Expert Member
16Nov2011,15:08   #2
Chong's Avatar
Hi
You have got it wrong. The following program below should show it.
++++++++++++++++++++++++++++++++++++++++++++++
Code:
#include<stdio.h>
#include<conio.h>

main(){
	unsigned int  num =100;
	unsigned int *ptr=&num;

	printf("%d\n",num);
	
	//if (ptr!=&num){
	//	printf("Something is wrong");
	//}
	printf("&num:%d\n",&num);
	printf("ptr:%d\n",ptr);
	getchar();
}
++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++

Last edited by shabbir; 16Nov2011 at 16:43.. Reason: Code blocks
Ambitious contributor
16Nov2011,16:51   #3
poornaMoksha's Avatar
Quote:
Originally Posted by priyatendulkar View Post
Hi,

Consider ,the following code

unsigned int num =10;
unsigned int * ptr = &num;

however,When i look into ptr ,the address stored in "ptr" IS NOT EQUAL to the ADDRESS of num..

I know this seems to be strange,but this is what I have obsreved..
Is this any kind of memory corruption or some known issue wich I may not be aware of?
Can you please share your code??
Mentor
16Nov2011,22:11   #4
xpi0t0s's Avatar
Are you looking at (a) the address of ptr, (b) ptr itself, or (c) what ptr is pointing at? If (b) then it should be exactly equal and if it isn't, your compiler is critically broken and you need a new one. But given the question you are asking, I suspect you're a beginner and the difference is actually down to a or c.
Go4Expert Member
17Nov2011,11:43   #5
priyatendulkar's Avatar
hi,

i know this sounds strange..
but I am looking at

b) ptr itself...
Ambitious contributor
17Nov2011,11:45   #6
poornaMoksha's Avatar
Can you please share your code? If we can have a look at your code, we would be able to understand your problem better.
Mentor
17Nov2011,13:33   #7
xpi0t0s's Avatar
You'll have to share your code. Also let us know what version of what compiler, and what version of what operating system, you're using. This code proves ptr should equal &num:
Code:
void test44()
{
	unsigned int num=10;
	unsigned int *ptr=&num;
	printf("%d %d %x %x\n",num,*ptr,&num,ptr);
}
Output (Visual C++ 2010):
10 10 1af79c 1af79c

So upload a short demo like the one here that shows the problem and include the output showing the different values of &num and ptr. Because ptr should be exactly equal to &num, and if it isn't then as I said before, either your compiler is terminally broken and you should never use it again, or you are looking at the wrong thing.

>>"When i look into ptr"
How exactly? Are you using a debugger?