如下代码运行时报错“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 初始化块中调用还未初始化的成员属性 )

有关Struts下载文件时报错问题

运行ride.py时报错

我的OpenGL学习进阶之旅着色器GLSL运行时报错: ERROR: 0:40: ‘gl_FragColor‘ : undeclared identifier

我的OpenGL学习进阶之旅着色器GLSL运行时报错: ERROR: 0:40: ‘gl_FragColor‘ : undeclared identifier

JSP页面运行时报的404错,求解???