TypeCodes

再谈“0xC0000005读取写入位置冲突”——正确使用指针访问内存

前面一篇文章中,总结了错误使用指针指向一个字符串常量,然后对该字符串常量进行写入操作导致出错:“未经处理的异常:0xC0000005: 读取/写入位置发生访问冲突”。

这篇文章继续使用指针来探索这个问题。

1 测试程序:“异常: 0xC0000005: 写入位置 0xxxxxxxxx 时发生访问冲突”

- 阅读剩余部分 -

未经处理的异常:0xC0000005:读取/写入位置冲突——从去掉字符串所有空格说起

在c/c++中,有时会遇到0xC0000005: 读取/写入位置冲突的问题。明明编译器编译通过,但是在执行的时候就出现Segmentation fault(coredump)了。

该错误是由于内存访问出错引起的,最常见于指针的错误使用和数组越界等。下面是博主之前的一个经历——去掉一个字符串前后的所有空格。

- 阅读剩余部分 -

解决C-FREE 5编译出现“ld.exe: Dwarf Error: found dwarf version '0'”的问题

1问题描述

之前自己在win7 64bit的机器上,安装了MinGW编译器,GCC版本是4.8.1,安装目录是 C:\MinGW ,同时安装了C-FREE 5这款C/C++集成开发环境到 D:\C-Free 5\ 目录。用c-free编译程序的时候总是报:C-FREE~1\mingw\bin\ld.exe: Dwarf Error: found dwarf version '0', this reader only handles version 2 and 3 information。如下图所示:

C-FREE 5编译出现“ld.exe: Dwarf Error: found dwarf version '0'”

- 阅读剩余部分 -

小心visual studio的“BUG”:变量的声明和使用

昨天一Q友找我帮忙写个C程序:其中函数fun要实现:求出2000到2500之内能被7或者17或者27整除,但是不能同时被7和17整除,也不能同时被17和27整除的整数。题目倒是不难,遂打开visual studio,默默地写出下面的程序。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
void fun(int *a, int *n)
{
   int i = 2000, sum = 0;
   for(;i<2501;i++)
   {
      if( (i%7==0 || i%17==0 || i%27==0) && (!(i%7==0  && i%17==0)) && (!(i%17==0 && i%27==0)) )
      {
           *a++ = i;
           sum++;
      }
   }
   /* 返回符合要求元素的个数 */
   *n = sum;
}

int main()
{
   int a[120];
   int k;
   fun(a,&k);
   /* 使指针pt指向数组a的起始地址 */
   int *pt = a;
   for(;pt<a+120;pt++)
   {
         printf("%d\n",*pt);
   }
   printf("%d\n",k);
   return 0;
}

然后ctrl+F5执行,结果很意外的报错了:

- 阅读剩余部分 -

Windows平台如何安装最新的MinGW GCC编译器

在Eclipse中搭建C/C++环境的话,需要一个C/C++编译器。之前文章《完美配置NetBeans IDE中的C/C++开发环境》中提到了使用Cygwin作为C/C++程序的编译器,那么这篇文章就说说在Windows平台如何安装最新的MinGW GCC编译器。

1 下载MinGW GCC编译器

MinGW官网地址是:http://www.mingw.org/,目前它已经把MinGW源码托管在了sourceforge上了,因此下载地址是:点击进入。把那个mingw-get-setup.exe下载至本地电脑上即可。

- 阅读剩余部分 -

完美配置NetBeans IDE中的C/C++开发环境

目前众多C/C++开发人员使用的开发工具都是微软VC6.0、VC08、VS之类的IDE,那么对于需要进行C/C++开发的java程序猿们是否也要安装这些大块头呢?答案是否定的,因为目前java主要的两大开源IDE——Eclipse和NetBeans都是扩展性很好的开发平台,它们能够利用开源社区贡献的插件灵活地加入PHP、C/C++等开发环境。

而相对于Eclipse,博主还是比较中意NetBeans。所以在本文中,博主用的是NetBeans7.2.1作为实例演示。在配置C/C++之前,博主也在网上查了很多资料,基本上写得比较乱,所以自己整理了一份完整的NetBeans中配置C/C++开发环境的方案。在具体的演示之前,大家需要明白的几个问题。

- 阅读剩余部分 -