摘要:
原文地址:http://blog.csdn.net/hairetz/article/details/4134446关于指针,觉得有点意思就发上我的注释,大家分析下,可以练练基本功。struct S{int i;int *p;};main(){S s;int *p=&s.i; //p指向s的首地址p[0]=4; //处理s.ip[1]=3; //s.p =3s.p=p; //s.p指向s的首地址s.p[1]=1; //s.p[1]就是s里的p,p=0x00000001s.p[0]=2; //操作0x00000001地址,代码在此处挂掉}这里虽然是在最后面才挂掉,但是野指针早在p[1]=3 阅读全文
摘要:
client.c#include <stdio.h> #include <sys/socket.h> #include <arpa/inet.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <netinet/in.h> #define BUFFSIZE 32 void Die(char *mess) { perror(mess); exit(1); } int main(int argc, char *argv[]) 阅读全文
摘要:
原文地址:http://www.cnblogs.com/skynet/archive/2011/03/07/1975479.html为什么需要知道C/C++的内存布局和在哪可以可以找到想要的数据?知道内存布局对调试程序非常有帮助,可以知道程序执行时,到底做了什么,有助于写出干净的代码。本文的主要内容如下:源文件转换为可执行文件可执行程序组成及内存布局数据存储类别一个实例总结源文件转换为可执行文件源文件经过以下几步生成可执行文件:1、预处理(preprocessor):对#include、#define、#ifdef/#endif、#ifndef/#endif等进行处理2、编译(compiler 阅读全文