求教C++中常见的内存异常有哪些以及如何处理和纠正
求教C++中常见的内存错误有哪些以及如何避免和纠正。
学习了C++个把个月了,指针这地方我也比较清晰的理解使用了,但是有时候还是遇到一些指针错误,内存错什么的。请各位大牛指点有哪些程序内存错误呢?,求教C++中常见的内存错误有哪些以及如何避免和纠正。
------解决方案--------------------
越界,使用悬垂指针,null指针,delete或free一个已经改变的指针等待
------解决方案--------------------
常见的如下:
char str[10];
str[10]=‘a’;
楼下继续
------解决方案--------------------
楼上的是越界,谢谢
------解决方案--------------------
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];在同一个系统内存页上处理是必然出错
所以这种问题很难查找
------解决方案--------------------
还有内存泄露问题。。。
指针共享:浅拷贝,深拷贝。。。
------解决方案--------------------
------解决方案--------------------
这玩意儿自己不犯个几次错,是不会了解的。
去看汇编吧。
学习了C++个把个月了,指针这地方我也比较清晰的理解使用了,但是有时候还是遇到一些指针错误,内存错什么的。请各位大牛指点有哪些程序内存错误呢?,求教C++中常见的内存错误有哪些以及如何避免和纠正。
------解决方案--------------------
越界,使用悬垂指针,null指针,delete或free一个已经改变的指针等待
------解决方案--------------------
常见的如下:
char str[10];
str[10]=‘a’;
楼下继续
------解决方案--------------------
楼上的是越界,谢谢
------解决方案--------------------
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];在同一个系统内存页上处理是必然出错
所以这种问题很难查找
------解决方案--------------------
还有内存泄露问题。。。
指针共享:浅拷贝,深拷贝。。。
------解决方案--------------------
------解决方案--------------------
这玩意儿自己不犯个几次错,是不会了解的。
去看汇编吧。