编程笔记
王世晖
呵呵哒
展开
-
段错误产生的原因
段错误产生的原因 1 访问不存在的内存地址 复制代码代码如下:#include #include void main() { int *ptr = NULL; *ptr = 0; } 2 访问系统保护的内存地址 复制代码代码如下:#include #include void main() { int *转载 2015-09-27 22:13:31 · 13240 阅读 · 0 评论 -
在函数内栈上申请大数组导致发生段错误
在函数内栈上申请大数组会耗尽栈空间,导致发生段错误,因此不要在函数内部申请数组,防止耗尽栈空间。解决办法1:函数内部动态分配堆内存,函数内释放,尽量做到谁申请谁释放,但是频繁动态申请堆内存会影响程序运行效率;解决办法2:函数外部申请全局大数组,做好防止写冲突。原创 2015-09-27 22:08:54 · 1830 阅读 · 0 评论 -
数组的初始化与memset的注意事项
如果全部初始化为0,可以int count[26]={0};这样初始化为26个0 如果int count[26]={2015};,则只有第一个按照给定值初始化,其余初始化为0 这种方法对于double数组同样适用 对char数组也适用,只是第一个元素按照给定值初始化外,其余的初始化为小写字母a 这种方法并不具有普适性,因为编译器的差异会导致不一样的结果,比如原创 2015-09-29 15:14:43 · 4488 阅读 · 1 评论 -
C++函数内大数组导致段错误
在函数里面不适合定义很大的临时数组变量。应该使用堆动态分配。栈大小有限,太大就报错了,所以要放到堆里,可以定义全局变量或动态分配。函数内部(局部变量)禁止定义大数组,而应使用动态内存;如数组需传入函数应使用指针作为参数;就算数组不大但是如果函数嵌套很多的话也会发生segment error。函数内是在栈分配内存,栈大小一般限制在1M到2M,函数外则是全局变量,在DATA段分配内存。在占原创 2015-10-07 19:42:37 · 7496 阅读 · 0 评论 -
scanf不判断是否读到EOF导致 output limit exceed
while(cin>>n)没有问题while(scanf("%d",&n)!=EOF)没有问题while(scanf("%d",&n))产生output limit exceed原创 2015-10-08 02:06:23 · 1052 阅读 · 0 评论 -
Android ListView不响应OnItemClickListener解决办法
有时候,当ListView中的每一个item是自定义的View时,有可能会导致ListView的OnItemClickListener的listener无法调用,请看如下情况: 如果你的自定义ListViewItem中有Button或者Checkable的子类控件的话,那么默认focus是交给了子控件,而 ListView的Item能被选中的基础是它能获取Focus,也就是说我们可以通过将转载 2015-10-07 22:20:15 · 7085 阅读 · 0 评论 -
Android用include引入其他xml布局文件
<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content">原创 2015-10-12 23:44:45 · 1369 阅读 · 0 评论