如下代码运行时报错“CRT detected that the application wrote to the end of heap buffer”,啥问题啊
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如下代码运行时报错“CRT detected that the application wrote to the end of heap buffer”,啥问题啊相关的知识,希望对你有一定的参考价值。
源代码如下:
#include<iostream>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <stdarg.h>
#include <windows.h>
using namespace std;
class FString
private:
char* sString;
public:
char* getsString() return sString;;
void setsString(char* sString) this->sString=sString;;
int Length() return(strlen(sString)); ;
FString operator+=(FString sAppend)
char* sAns =new char[sAppend.Length()+1];
strcpy(sAns,sString);
strcat(sAns,sAppend.sString);
sString = _strdup(sAns);
delete []sAns;
return(*this);
;
;
void main()
FString fString1,fString2;
char c1[100];
char c2[100];
cout<<"请输入第一个字符串:"; cin>>c1; fString1.setsString(c1);
cout<<"请输入第二个字符串:"; cin>>c2; fString2.setsString(c2);
fString1 += fString2;
cout<<"结果为:"<<fString1.getsString()<<endl;
因为对内存的操作越界了,超出所分配的内存的边界。
解决方案:
增大分配的内存。
e.g.
ans = new int[size_a+size_b +1 ];
或者加到自己适宜的大小,问题即可解决。
总结:
对内存的操作要细之又细,new完后要delete,操作时不要越界(包括向前越或向后越)。 参考技术A strcpy(sAns,sString);
strcat(sAns,sAppend.sString); //在这个地方出错啦,这里是把sAppend.sString追加到sAns后面。
因为你只是开辟了
char* sAns =new char[sAppend.Length()+1]; 这句应该改为
char* sAns = new char[this->Length() + sAppend.Length()+1];
但是这样也很容易出问题,因为你那类里面的指针this->sString只是临时的变量。这是个大问题.。本回答被提问者和网友采纳
我的OpenGL学习进阶之旅着色器GLSL运行时报错: ERROR: 0:40: ‘gl_FragColor‘ : undeclared identifier
一、错误描述
把从一段GLSL2.0的代码改造成GLSL3.0代码的时候,运行报错,如下所示:
[GLUtils.cpp][loadShader][42]: GLUtils::loadShader error compiling shader:
ERROR: 0:10: \'gl_FragColor\' : undeclared identifier
ERROR: 0:10: \'assign\' : cannot convert from \'4-component vector of float\' to \'float\'
ERROR: 2</
以上是关于如下代码运行时报错“CRT detected that the application wrote to the end of heap buffer”,啥问题啊的主要内容,如果未能解决你的问题,请参考以下文章
错误记录Kotlin 代码运行时报错 ( 在 init 初始化块中调用还未初始化的成员属性 )
我的OpenGL学习进阶之旅着色器GLSL运行时报错: ERROR: 0:40: ‘gl_FragColor‘ : undeclared identifier
我的OpenGL学习进阶之旅着色器GLSL运行时报错: ERROR: 0:40: ‘gl_FragColor‘ : undeclared identifier