发博文
新闻每天一则
暂无内容
留言
加载中…
评论
加载中…
访客
加载中…
博文
(2010-03-24 15:42)
标签:

杂谈

分类: ProgramLanguage

c变量

(一) 一个程序将操作系统给其分配的内存分为4块

1.代码区。。存放程序的代码。各个函数的代码块

2.全局数据区,存放全局数据和静态变量

3.堆区:存放程序的动态数据

4.栈区:存放程序的局部数据,即各个函数的数据。

 

 

(二) 局部变量:在一个函数中说明的变量,他只在该函数中有效。函数外部可以使用该变量

1:主函数main()中定义的局部变量也只能在主函数中用

2:允许不同函数中定义相同名称变量,他们代表不同对象,分配不同单元,互不干扰

3:形参变量也是内部变量,属于被调用函数。实参变量,是调用该函数的内部变量

4:复合语句中也可以定义变

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

杂谈

分类: ProgramLanguage

//原型:char *strcpy(char *strDst, const char *strSrc)

#include <iostream>
#include <assert.h>
using namespace std;
char *StrCpy(char *strDst,const char * strSrc)
{
 assert((strDst!=NULL)&&(strSrc!=NULL));
 char *addr = strDst;
 while ((*strDst++=*strSrc++)!= '\0') NULL;
 return addr;
}

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

杂谈

分类: ProgramLanguage

//注意:char转换为int型是把char转换为对应的ASCII码

#include <iostream>
using namespace std;
int CharToInt(const char *str)
{
 int iVal = *str++-'0';
 while (*str!='\0')
 {
  iVal = iVal*10 +(*str++-'0');
 }
 return iVal;
}
void main()
{
 char *str ='12345';
 cout<<'str: '<<str<<endl;
 int i = 0;
 i = CharToInt(str);
 cout<<'  Int: '<<i<<endl;
}

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

杂谈

分类: ProgramLanguage
//功能:把整数转换成字符串 即:itoa的功能
//注意:对负整数的处理(先要把负整数转换成正整数,在转换成字符串,否则会出错)
#include <iostream>
using namespace std;
void IntToChar(const int ival,char *s)
{
 int iTmp = ival;
 char *pHead = s;
 //存储符号标记
 if (iTmp< 0)
 {
  *pHead++ ='-';
   iTmp = -iTmp;
 }
 char *rvspHead = pHead;
 int iDigit = 0;//整数的位数
 //整数逆序存储在dst中
 while (iTmp)
 {
  iDigit++; 
  *rvspHead++ = iTmp %10+'0';
  iTmp = iTmp/10; 
 }
 if (*pHead!='\0')
 {
  rvspHead--;
 }
 for (int i = iDigit/2;i>0;i--)
 {
  *rvspHead ^=*pHead;
  *pHead ^=*rvspHead;
  *rvspHead--^=*pHead++;
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2010-01-25 00:17)
标签:

杂谈

分类: ProgramLanguage

1.

使用C编译器,可以这样指定: #define _STDC_

使用C++编译器,             #define _cplusplus

2.

出错提示:The program '[3084] CountSize.exe: Native' has exited with code 0 (0x0).

解决: this is normal.it is stand for the program is exiting normaly.

  method1: run the program with CTRL+F5, rather than only F5;

  method2: add the sentence: system('pause'); at the end of the program.

  method3: add the sentences: | printf('press any key to continue....');

                              | _getch();

3. 字节对齐

   长度为取其最长字节的整数倍,

   按最小字节对齐

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

杂谈

 

          转载自:http://www.hacker.com.cn/article/view_15699.html

 

Win32系统中进程主线程初始化时,ebx为什么指向PEB

 

 

阳光在阅读《脱壳的艺术》,其中阐述某些壳修改程序流程的方法,是使用CreateProcess(CREATE_SUSPENDED)创建新的被挂起的进程,此时其初始化线程上下文中,ebx即为其PEB指针。

于是阳光找我讨论这是为什么。我相信大家在用OD的过程中也早已发现,如果不使用CREATE_SUSPENDED,初始化线程在跑到入口点后,其ebx同样指向PEB结构。

显然,我们必须进入Win32系统新进程创建的过程来找这个真相。由于我们知道初始化线程被创建后(尚未Resume)ebx就已经指向PEB了,所以

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

杂谈

 

临时变量和局部变量
临时变量是看不到的,
C++建立临时变量的情况:
1,在函数形参和实参的类型不匹配的时候
1)size_t countChar(const string& str, char ch);  
     char buffer[MAX_STRING_LEN];
            如果传递的是buffer进去,那么C++就会利用String的构造函数,建立一个临时变量,把     Buffer 转换成string类型
         2)对于参数的值传递,const引用的类型的参数,如果类型不匹配的话,就会生成一个临时变量
   对了非const的引用,不会生成临时对象,原因:在非const引用参数的函数中,参数是可以改变的,如果产生了临时对象的话,这个临时对象被传进函数里面,那么,函数修改的就是这个临时变量,而不是形参,这个就是为什么C++不允许为非const引用创建临时变量的原因。

2,函数返回的时候可能会建立临时变量

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2009-10-09 10:59)
标签:

杂谈

 
当一个进程被初始化时,系统要为它分配一个句柄表。该句柄表只用于内核对象,不用于用户对象或GDI对象。在Windows2000、Windows98和WindowsCE中,它们的实现方法是不同的。
当进程初次被初始化时,它的句柄表是空的。然后,当进程中的线程调用创建内核对象的函数时,内核就为该对象分配一个内存块,并对它初始化。这时,内核对进程的句柄表进行扫描,找出一个空项并对它进行初始化。该指针成员将被设置为内核对象的数据结构的内存地址,访问屏蔽设置为全部访问权,同时,各个标志也作了设置。用于创建内核对象的所有函数均返回与进程相关的句柄,这些句柄可以被在相同进程中运行的任何或所有线程成功地加以使用。该句柄值实际上是放入进程的句柄表中的索引,它用于标识内核对象的信息存放的位置。因此当调试一个应用程序并且观察内核对象句柄的实际值时,会看到一些较小的值,如1,2等。句柄的含义并没有记入文档资料
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2009-10-09 10:58)
标签:

杂谈

 
 
托管是.NET的一个专门概念,它是融于通用语言运行时(CLR)中的一种新的编程理念,因此我们完全可以把“托管”视为“.NET”。那么什么是“通用语言运行时”?通用语言运行时是.NET     框架应用程序的执行引挚。它提供了许多服务,其中包括:代码管理(装入和执行)、类型安全性验证、元数据(高级类型信息)访问、为管理对象管理内存、管理代码,COM对象和预生成的DLLs(非管理代码和数据)的交互操作性、对开发人员服务的支持等等。   
    
      也就是说,使用托管C++意味着,我们的代码可以被CLR所管理,并能开发出具有最新特性如垃圾自动收集、程序间相互访问等的.NET框架应用程序。   
    
      由托管概念所引发的C++应用程序包括托管代码、托管数据和托管类三个组成部分。     
    
      (1)    
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
PE
(2009-10-09 10:57)
标签:

杂谈

分类: ProgramLanguage
什么是PE文件[转]
2007-05-27 14:25

PE 的意思就是 Portable Executable(可移植的执行体)。它是 Win32环境自身所带的执行体文件格式。它的一些特性继承自 Unix Coff (common object file format)文件格式。'portable executable'(可移植的执行体)意味着此文件格式是跨win32

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
  

新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有