求教C++中常见的内存错误有哪些以及如何避免和纠正。

wintree 2011-07-19 04:51:08
学习了C++个把个月了,指针这地方我也比较清晰的理解使用了,但是有时候还是遇到一些指针错误,内存错什么的。请各位大牛指点有哪些程序内存错误呢?,求教C++中常见的内存错误有哪些以及如何避免和纠正。
...全文
874 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yurui199303116 2012-04-16
  • 打赏
  • 举报
回复
-------------------Configuration: e - Win32 Debug--------------------
Compiling...
1.cpp
D:\Program Files\Microsoft Visual Studio\MyProjects\e\1.cpp(7) : error C2018: unknown character '0xa1'
D:\Program Files\Microsoft Visual Studio\MyProjects\e\1.cpp(7) : error C2018: unknown character '0xb1'
D:\Program Files\Microsoft Visual Studio\MyProjects\e\1.cpp(7) : error C2065: 'I' : undeclared identifier
D:\Program Files\Microsoft Visual Studio\MyProjects\e\1.cpp(7) : error C2146: syntax error : missing ';' before identifier 'like'
D:\Program Files\Microsoft Visual Studio\MyProjects\e\1.cpp(7) : error C2065: 'like' : undeclared identifier
D:\Program Files\Microsoft Visual Studio\MyProjects\e\1.cpp(7) : error C2146: syntax error : missing ';' before identifier 'C'
D:\Program Files\Microsoft Visual Studio\MyProjects\e\1.cpp(7) : error C2065: 'C' : undeclared identifier
D:\Program Files\Microsoft Visual Studio\MyProjects\e\1.cpp(7) : error C2017: illegal escape sequence
D:\Program Files\Microsoft Visual Studio\MyProjects\e\1.cpp(7) : error C2018: unknown character '0xa1'
D:\Program Files\Microsoft Visual Studio\MyProjects\e\1.cpp(7) : error C2018: unknown character '0xb1'
D:\Program Files\Microsoft Visual Studio\MyProjects\e\1.cpp(7) : error C2146: syntax error : missing ';' before identifier 'n'
D:\Program Files\Microsoft Visual Studio\MyProjects\e\1.cpp(7) : error C2065: 'n' : undeclared identifier
执行 cl.exe 时出错.

e.exe - 1 error(s), 0 warning(s)
wintree 2011-07-20
  • 打赏
  • 举报
回复
这,大家真的不给力啊啊!
ForestDB 2011-07-20
  • 打赏
  • 举报
回复
这玩意儿自己不犯个几次错,是不会了解的。
去看汇编吧。
qwer_boo 2011-07-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bdmh 的回复:]

越界,使用悬垂指针,null指针,delete或free一个已经改变的指针等待
[/Quote]++
野男孩 2011-07-19
  • 打赏
  • 举报
回复
指针的错误用法都是内存错。这个没法穷举尽。。。。
wintree 2011-07-19
  • 打赏
  • 举报
回复
竟然这么少的人回复,好伤心啊~~~~
ryfdizuo 2011-07-19
  • 打赏
  • 举报
回复
还有内存泄露问题。。。
指针共享:浅拷贝,深拷贝。。。
Meteor_Code 2011-07-19
  • 打赏
  • 举报
回复
char *p;
p = new char [16];
p[16] = '\0';
//.....
delete []p;
p = new char [16];

当多个线程并发,或者逻辑跨度很大,或者索引不是常数时经常出错
p[16] = '\0';//不一定崩溃
delete []p;;//不一定崩溃
p = new char [16];//不一定崩溃,delete []p;和p = new char [16];在同一个系统内存页上处理是必然出错
所以这种问题很难查找
zhanshen2891 2011-07-19
  • 打赏
  • 举报
回复
楼上的是越界,谢谢
至善者善之敌 2011-07-19
  • 打赏
  • 举报
回复
常见的如下:
char str[10];
str[10]=‘a’;

楼下继续
bdmh 2011-07-19
  • 打赏
  • 举报
回复
越界,使用悬垂指针,null指针,delete或free一个已经改变的指针等待

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧