`

下面的程序会在哪一行崩溃---指针安全问题

    博客分类:
  • C++
阅读更多
struct S
{
	int i;
	int* p;
};

void main()
{
	struct S s;
	int* p = &s.i;
	p[0] = 3;
	p[1] = 4;
	s.p = p;
	s.p[1] = 1;
	s.p[0] = 2;
}


----选自《程序员面试宝典》P72
分享到:
评论

相关推荐

    MS-VC-使用MAP文件快速定位程序崩溃代码行-VC++

    作为程序员,平时最担心见到的事情就是程序发生了崩溃,无论是指针越界还是非法操作,都将给我们的应用系统造成巨大的损失。...我们更为关心的是程序中的哪一行导致了系统崩溃,这样我们才能有针对性的进行改正。

    c++ 面试题 总结

    一个程序片断可能会被分为几十段,这样很多时间就会被浪费在计算每一段的物理地址上(计算机最耗时间的大家都知道是I/O吧)。 段页式管理:结合了段式管理和页式管理的优点。把主存分为若干页,每一页又分为若干段...

    定位崩溃地址,上传三个文件

    上传三个文件,阐述定位崩溃地址,程序员,平时最担心见到的事情就是程序发生了崩溃,无论是指针越界还是非法操作,都将给我们的...我们更为关心的是程序中的哪一行导致了系统崩溃,这样我们才能有针对性的进行改正。

    易语言程序免安装版下载

    修改BUG:矢量动画支持库中的“矢量编辑框”组件在光标位于组件左上角时按左光标键进入前一行可能会导致显示错误或内存申请失败。 11. 修改BUG:网络传送支持库在使用代理下载时可能会导致程序崩溃。 12. 修改BUG...

    《你必须知道的495个C语言问题》

    中,如果不关心a[]的哪一个分量会被写入,这段代码就没有问题,i也的确会增加1,对吗? 38  3.11 人们总是说i=i++的行为是未定义的。可我刚刚在一个ANSI编译器上尝试过,其结果正如我所期望的。 38  3.12 我不...

    你必须知道的495个C语言问题

    中,如果不关心a[]的哪一个分量会被写入,这段代码就没有问题,i也的确会增加1,对吗? 3.11 人们总是说i=i++的行为是未定义的。可我刚刚在一个ANSI编译器上尝试过,其结果正如我所期望的。 3.12 我不想学习那些...

    C语言FAQ 常见问题列表

    o 6.2 怎样在程序里获得一个空指针? o 6.3 用缩写的指针比较 ``if(p)" 检查空指针是否可靠?如果空指针的内部表达不是 0 会怎么样? o 6.4 NULL 是什么, 它是怎么定义的? o 6.5 在使用非全零作为空指针内部...

    你必须知道的495个C语言问题.pdf

    中,如果不关心a[]的哪一个分量会被写入,这段代码就没有问题,i也的确会增加1,对吗? 3.11 人们总是说i=i++的行为是未定义的。可我刚刚在一个ANSI编译器上尝试过,其结果正如我所期望的。 3.12 我不想学习那些复杂...

    C#微软培训资料

    第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 3.5 小 结 .27 第二部分 C#程序设计基础.28 第四章 数 据 类 型 .28 4.1 值 类 型...

    入门学习Linux常用必会60个命令实例详解doc/txt

    上面代码中,第一行是Linux发行版本号,第二行是内核版本号和登录的虚拟控制台,我们在第三行输入登录名,按“Enter”键在Password后输入账户密码,即可登录系统。出于安全考虑,输入账户密码时字符不会在屏幕上回显...

    操作系统(内存管理)

    不过,即使是在这样一个简单的计算机中,您也会有问题,尤其是当您不知道程序的每个部分将需要多少内存时。如果您的空间有限,而内存需求是变化的,那么您需要一些方法来满足这些需求: 确定您是否有足够的内存来...

    内存管理内存管理内存管理

    不过,即使是在这样一个简单的计算机中,您也会有问题,尤其是当您不知道程序的每个部分将需要多少内存时。如果您的空间有限,而内存需求是变化的,那么您需要一些方法来满足这些需求: 确定您是否有足够的内存...

    你必须知道的495个C语言问题(PDF)

    5.2 怎样在程序里获得一个空指针? . . . . . . . . . . . . . . . . . . . 21 5.3 用缩写的指针比较“if(p)” 检查空指针是否可靠?如果空指针的内 部表达不是0 会怎么样? . . . . . . . . . . . . . . . . . . . ...

    VC++6.0核心编程源码.rar

    通过选定Watch窗口中的一行,并键入“@err,hr",你就能够做到这一点。观察图1-1,你会看到我已经调用了CreateFile函数。该函数返回INVALID_HANDLE_VALUE(-1)的HANDLE,表示它未能打开指定的文件。但是Watch窗口向...

    Effective Exception Handling in Visual C++

    这篇文章描述的是捕获和处理运行在...这篇文章附带了一个小控制台程序ExceptionHandler作为例子,这一个例子能产生和捕获各种不同的异常,并且能生成一个崩溃时的Dump文件,通过这个文件你可以定位到出错的代码行。

    华为编程开发规范与案例

    上面的问题解决起来很容易,只需在第一行代码中增加一个判断条件即可,如下:  for(i=0; i<pSysHead->dbf_coun && i ; i++) // MAX_DB_NUM=127 这样就保证了循环变量i的值在正常范围内,从而避免了对指针pDBFat...

    Boost深入剖析之使用技巧

    如果你还在为自己写的程序存在各种野指针,内存泄漏,甚至崩溃的问题而苦恼的话,请使用boost;如果你还在为自己写的程序存在很多与Windows依赖的操作导致无法跨平台而困扰的话,请赶紧采用boost吧. 它将为你提供丰富多样...

    《Boost深入剖析之使用技巧》第四讲:Boost容器库(中).flv

    如果你还在为自己写的程序存在各种野指针,内存泄漏,甚至崩溃的问题而苦恼的话,请使用boost;如果你还在为自己写的程序存在很多与Windows依赖的操作导致无法跨平台而困扰的话,请赶紧采用boost吧. 它将为你提供丰富多样...

Global site tag (gtag.js) - Google Analytics