首页
社区
课程
招聘
[原创]献给新手——用一段代码来揭示新手对于堆栈的认识——本文需要新手用OD调试慢慢体会,高手不要浪费时间于此,真心希望像我一样的新手对于堆栈的认识不再茫然,欢迎批评指正
发表于: 2012-3-31 12:59 5497

[原创]献给新手——用一段代码来揭示新手对于堆栈的认识——本文需要新手用OD调试慢慢体会,高手不要浪费时间于此,真心希望像我一样的新手对于堆栈的认识不再茫然,欢迎批评指正

2012-3-31 12:59
5497
记得要用debug方式编译,这样会有符号名,顺序也不会乱,编译好后用OD调试,什么?不会用OD?建议去看海绵宝宝。
#include<stdio.h>
#include<malloc.h>
#include<iostream>
using namespace std;
int GlobalVariable1,GlobalVariable2,GlobalVariable3,GlobalVariable4=0xF1,GlobalVariable5=0xF2;
char GlobalVariable6,GlobalVariable7,GlobalVariable8,GlobalVariable9='b',GlobalVariable10='B';
void main()
{
	int LocalVariable1,LocalVariable2,LocalVariable3,LocalVariable4=0xF3,LocalVariable5=0xF4;
	double LocalVariable6,LocalVariable7,LocalVariable8,LocalVariable9=0.3,LocalVariable10=3;
	float LocalVariable11,LocalVariable12,LocalVariable13,LocalVariable14=0.3,LocalVariable15=3;
	char LocalVariable16,LocalVariable17,LocalVariable18,LocalVariable19='a',LocalVariable20='A';
	static int StaticLocalVariable1,StaticLocalVariable2,StaticLocalVariable3,StaticLocalVariable4=0xF5,StaticLocalVariable5=0xF6;
	char StringVariable1[]="StringVariable1",*pStringVariable1="StringVariable2";
	const char StringVariable2[]="StringVariable2",*pStringVariable2;

	pStringVariable1 = "ConstVariable";
	pStringVariable1 = StringVariable1;
	pStringVariable2 = StringVariable2;
	pStringVariable1 = "StringVariable1";

	pStringVariable1 = "GlobalVariable";
	GlobalVariable1 = 1;
	GlobalVariable2 = 2;
	GlobalVariable3 = 3;
	GlobalVariable4 = 4;
	GlobalVariable5 = 5;
	
	GlobalVariable6 = 1;
	GlobalVariable7 = 2;
	GlobalVariable8 = 3;
	GlobalVariable9 = 4;
	GlobalVariable10 = 5;

	pStringVariable1 = "StaticLocalVariable";
	StaticLocalVariable1 = 1;
	StaticLocalVariable2 = 2;
	StaticLocalVariable3 = 3;
	StaticLocalVariable4 = 4;
	StaticLocalVariable5 = 5;

	pStringVariable1 = "LocalVariableInt";
	LocalVariable1 = 1;
	LocalVariable2 = 2;
	LocalVariable3 = 3;
	LocalVariable4 = 4;
	LocalVariable5 = 5;

	pStringVariable1 = "LocalVariableDouble";
	LocalVariable6 = 1;
	LocalVariable7 = 2;
	LocalVariable8 = 3;
	LocalVariable9 = 4;
	LocalVariable10 = 5;

	pStringVariable1 = "LocalVariableFloat";
	LocalVariable11 = 1;
	LocalVariable12 = 2;
	LocalVariable13 = 3;
	LocalVariable14 = 4;
	LocalVariable15 = 5;

	pStringVariable1 = "LocalVariableChar";
	LocalVariable16 = 1;
	LocalVariable17 = 2;
	LocalVariable18 = 3;
	LocalVariable19 = 4;
	LocalVariable20 = 5;

	void *i,*j;
	i = malloc(1);
	j = new char;
	free(j);
	delete[] i;
	i = j = NULL;
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 238
活跃值: (55)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
2
本人浅薄的认识:
1.全局变量和静态局部变量是放在一起的,同在.data段,但初始化和未初始化的变量是分开放置的。
2.字符串常量同在.rdata段,局部变量初始化所用数值型常量通常编码在代码中即.text段或.code段,
全局变量和静态变量的初始化所用常量直接就在.data段。
3.在vc6.0中int和float同占4个字节;char局部变量占4个字节,全局变量占1个字节。
4.在vc6.0中,malloc和new都在堆中分配内存,而且free和delete分别可以释放new和malloc分配的内存。
看到一个蛋疼的代码
void __cdecl operator delete(void *p) _THROW0()
{        // free an allocated object
        free(p);
}
以上结论仅限VC6.0
新手吐个槽:没有实践,就没有真知。
2012-3-31 13:00
0
雪    币: 183
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
玩玩,,~LZ用心了
我只记得delete和free之后指针应该给NULL
是不是我太死板了!
2012-3-31 13:00
0
雪    币: 238
活跃值: (55)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
4
果断改正,多谢windowsa兄。发完贴立即闪人,要不一会儿就被口水淹死了
2012-3-31 13:05
0
雪    币: 183
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
大家一起互相学习,我也是看了钱老师的书和教程,才知道的
2012-3-31 13:18
0
雪    币: 238
活跃值: (55)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
6
讲一下书的名称,我没看过,在此多谢了
2012-3-31 13:20
0
雪    币: 183
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
http://bbs.pediy.com/forumdisplay.php?f=163

论坛就有他的C和C++教程下载地址!

突然间发现,LZ的标题很有吸引力
2012-3-31 13:22
0
雪    币: 122
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
恩,互相学习吧
2012-3-31 13:23
0
游客
登录 | 注册 方可回帖
返回
//