随笔分类 - C/C++
摘要:今天碰到一个很好玩的程序,我纠结了很久才弄明白。。。下面解释都是在Debug模式下的:#include <STDIO.H>
#include <windows.h> void Fun(); int main()
{ BYTE *p; p = (BYTE *)Fun; printf("p = %X\n",p); printf("*p = %X\n",*p); printf("Fun = %X\n",Fun); Fun(); return 0;
} void Fun()
{ printf("Hello W
阅读全文
摘要:man vim 命令帮助,查看命令使用形式。 命令行下快捷 有时候在 X-Window里由于程序出错,使鼠标键盘都不起作用, 这时候不用着急, 因为在Linux下几乎不会像在Win 9x里那样恶性死机, 你只须键入Ctrl+Alt+BackSpace键就可以回到字符界面下了。 Ctrl+a :标移到行首。 Ctrl+e:把光标移到行尾。 Ctrl+l:清除终端。该快捷操作与在命令行键入clear作用相同。 Ctrl+d:从Shell提示中注销并关闭,使用该快捷键就不必键入exit。 Tab:命令行自动补全。 Ctrl+Alt+Delete:关机和重新引导,只有在正常关机不起作用...
阅读全文
摘要:OD基本调试命令F2:设置断点F8:执行下一条指令F7:单步步入,功能和F8类似,区别是遇到cll指令调试子程序会跟进子程序F4:运行到选定位置F9:运行程序,若是没有断点就一直处于运行状态F12:停止运行Debug基本调试命令debug filename 进入调试-R 查看,修改寄存器的内容,比如R CS,可以查看CS寄存器内容,并且可以修改-D 查看内存中的内容。比如 D 0010,查看内存是0010的内容-E 修改内存中的内容,和D使用一样-U 将内存中的机器指令翻译成汇编指令-T 执行下一条机器指令-A 以汇编指令的格式在内存中写入一条机器指令TC基本调试命令F7:Trace into
阅读全文
摘要:今天跑去计算机学院上OS课的时候了解了下程序的装载和链接,虽然很理论,但还是决定记下来,再加些自己的理解。回来第一件想弄清楚的就是逻辑地址,虚拟地址和物理地址。我去网上查了一下,在http://bbs.chinaunix.net/thread-2083672-1-1.html看到了解释,我觉得解释的很好,就copy下了((*^__^*) )---------------------------------------------------------物理地址(physical address)用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。——这个概念应该是这几个概念中...
阅读全文
摘要:程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。 1、内存分配方式 内存分配方式有三种: (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 (2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 (3) 从堆上分配,亦称动态内...
阅读全文
摘要:gcc & g++现在是gnu中最主要和最流行的c & c++编译器 。g++是c++的命令,以.cpp为主,对于c语言后缀名一般为.c。这时候命令换做gcc即可。其实是无关紧要的。其实编译器是根据gcc还是g++来确定是按照C标准还是C++标准编译链接。下面以Test.cpp为例:命令: g++ Test.cpp功能:生成默认为a.exe的文件,这个过程包含了编译和链接。再说下-o命令,-o命令表示输出的意思,gcc/g++命令是非常灵活的,你不指定输出的文件名的时候默认生成的是.exe文件。你要输出Test.exe的话可以用:g++ -o Test.exe Test.cpp
阅读全文
摘要:在Windows下使用gcc编译器:1.首先介绍下MinGWMinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环境,它是Minimalist GNU on Windows的略称。 实际上 MinGW 并不是一个 单纯的C/C++ 编译器,而是一套 GNU 工具集合。除开 GCC 以外,MinGW 还包含有一些其他的 GNU 程序开发工具 (比如 gawk bison 等等)。 开发 MinGW 是为了那些不喜欢工作在 Linux(FreeBSD) 操作系统而留在 Windows 的人提供一套符合 GNU 的 GNU 工作环境。 所以,使用 MinGW 我们就可以像在 Lin...
阅读全文
摘要:菜单是很重要的资源,我就大概看了些菜单,总结了下菜单的基本使用。要引入菜单资源: Resource Script 资源脚本 添加到工程里面,这里要注意,产生后出现两个文件,这里假设是menu.rc和rescource.h,由于rc是资源文件的集合,能包含图标,菜单,字符文件资源等等,也可以包含多个菜单。所以你在引用菜单的时候一定要把菜单的名字和你指定的引用的相同,你可以用文本编辑器直接打开.rc文件或者.h文件。菜单的名字以“MenuDemo”为例,要加""。菜单对应的值是操作系统规定的,是101。可以打开.h文件看看.关于菜单的基本知识,菜单的三个特性:1.在菜单中显示什
阅读全文
摘要:今天看到博客,然后发现一个比较有意思的程序。就是没搞懂为什么是这样,还是直接上代码吧,//test.c#include <stdio.h>#include "C:/define.h"#define SIZE sizeof(int)int main(int argc, char *argv[] ){ printf("%ld",UINTMAX); printf("/nThe size of int in this system is:%d",INTLEN); getch(); return 0 ;} 在C盘下面创建一个defi
阅读全文
摘要:基于对话框的MFC应用程序GetWindowRect(),GetClientRect()探究
阅读全文
摘要:鼠标未离开窗口区域 产生MouseLeave消息
阅读全文
摘要:union 共用体名{ 数据类型 成员名; 数据类型 成员名; ... } 变量名; 共用体表示几个变量共用一个内存位置,在不同的时间保存不同的数据类型和不同长度的变量。在union中,所有的共用体成员共用一个空间,并且同一时间只能储存其中一个成员变量的值。正是利用union这个公用同块地址的特点可以有很多的用途。1.CPU大小端的测试首先了解下大小端模式:大端模式 所谓的大端模式,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;小端模式 所谓的...
阅读全文
摘要:C/C++ 通用 MakefileGeneric Makefile for C/C++ Program==================================================Keywords: Makefile, make, Generic, C/C++Author: whyglinux (whyglinux AT hotmail DOT com)Date: 2006-03-04==================================================本文提供了一个用于对 C/C++ 程序进行编译和连接以产生可执行程序的通用 Makefil
阅读全文
摘要:#include <stdio.h>void main(){ char *p = NULL,*str = "aafg" ,aa[10] = "abc"; p = strcpy(str,aa); printf("%s/n",p );} 定义了一个指向字符串的指针,str是在栈上分配的变量,储存的地址对应的是在常量区中分配的空间。"aafg"是存储在常量区里面,是不能改变的。char *str 其实存在一种 const char *类型的隐式转换,而strcpy要做的改变常量,所以程序编译的时候没错,运行的
阅读全文
摘要:现象:在vs2008中,建立一个空项目,添加一个c++文件main.cc#include<iostream>using namespace std;int main(){cout << "hello"<<end;return 0;s}该程序能够编译得过,但是执行,无论是debug还是release,都很出现“无法找到“xxx.exe”的调试信息,或者调试信息不匹配。未使用调试信息生成二进制文件。”从网上找了一些解答,终于把这个问题给解决了。只要是“建立项目的时候不应建立空项目,而应当建立一个“win32控制台应用程序”。这样确实可以解决问
阅读全文
摘要:数组访问数组和指针访问数组的区别:char a[] = "abcdef"; char *p = "abcdef";数组的访问是通过先获取数组的首地址,然后通过相对的偏移量来获取地址,通过地址读出内容;指针的访问形式:假设指针本身的地址是4624,先是存储变量是4624的内容,假设是5081,取得i的值算出5081+i的值然后读取该地址的内容,也就是说指针访问数组的多了一次额外的提取。指针保存的是数据的地址,间接来访问数据,首先获得是存储的内容,将其作为地址,然后通过地址提取数据。而数组a[i]只是简单的以a+i为地址取得数据。数组指针和指针数组的区别:i
阅读全文
摘要:/* -------------------------------------------------------------------------** File : cexcept.c *** Coder: Spark Song. * ** Note : Use the example code from 《C Interfaces and Implementations》 ...
阅读全文
浙公网安备 33010602011771号