堆 栈

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	int a = 0x01020304 ;
	int b = 0x05060708 ;
	char *p = (char *)&b ;
	
	printf("a %p a+1 %p b %p\n", &a, (&a)+1, &b );
	/*
		a 的地址比 b的地址大,所以栈是向下增长的 
		int 类型存储 低位存储在低位,高位存储在高位 
	*/ 
	
	for( int i = 0 ; i < 4 ; ++i )
	{
		int *pa = (int *)(p + i) ;
		printf("地址 %p %x\n", pa, *pa ); 
	}
	
	int *p_a = (int *)malloc( sizeof(int)*4);
	int *p_b = p_a + 1;//(int *)malloc( sizeof(int)*1 );
	int *p_c =  (int *)malloc( sizeof(int)*4 );
	
	*p_a = 0x01020304 ;
	*p_b = 0x05060708 ;
	
	printf("p_a %p\np_b %p\np_c %p\n", p_a, p_b, p_c );
	/*
		a 的地址比 b的地址小,所以堆是向上增长的 
	*/ 
	
	printf("p_a -1  p = %p 值 = %d\n", p_a-1, *(p_a-1) );
	
	p = (char *)p_b ;
	for( int i = 0 ; i < 4 ; ++i )
	{
		int *pa = (int *)(p + i) ;
		printf("地址 %p %x\n", pa, *pa ); 
	}
	
	free(p_a);
	p_a = NULL ;
	free(p_c);
	p_c = NULL ;
	return 0 ;
}
发布了4 篇原创文章 · 获赞 0 · 访问量 53
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览