byte-关于使用 new BYTE(100)使用之后delete出错,错误信息:堆栈被破坏

问题描述

关于使用 new BYTE(100)使用之后delete出错,错误信息:堆栈被破坏

错误如题,代码如下:
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
struct name
{
char name_char;
int fi;
};

struct student_info
{
int id;
long student_id;
int class_num;
name cn[1];
};
void main()
{
int len_byte = sizeof(student_info)+25*sizeof(name);
student_info* student = (student_info*) new BYTE(len_byte);

student->id = 11;
student->class_num = 11;
student->student_id = 123434;
for(int i = 0 ; i < 26 ; i ++)
{
    student->cn[i].name_char = (char)(i+22);
    student->cn[i].fi = i;
}

cout<<"hello C++"<<endl;
delete student;//在执行这个语句的时候VS会抛出异常,

}

错误显示如下:
其原因可能是堆被损坏,这说明 test_other_func_code.exe 中或它所加载的任何 DLL 中有 Bug。

原因也可能是用户在 test_other_func_code.exe 具有焦点时按下了 F12。

解决方案

student_info* student = new student_info();
就可以了。
你这样也不能改变cn数组的大小

解决方案二:

我需要在后面连一串name,而且name的长度是不定的。所以需要在new的时候new出一块同样的内存

时间: 2024-10-02 03:38:17

byte-关于使用 new BYTE(100)使用之后delete出错,错误信息:堆栈被破坏的相关文章

java io-java流中read(byte[] b)和read(byte[] b,int off,int len)有什么区别

问题描述 java流中read(byte[] b)和read(byte[] b,int off,int len)有什么区别 InputStream in = new FileInputStream(sourcePath); byte[] b = new byte[1024]; while (in.read(b,0,1023)!=-1) { System.out.println(new String(b)); }; 和 while (in.read(b)!=-1) { System.out.pri

c#接收多个Byte数组,组成Byte数组,转成图片,中间出现丢失字节,如何保证图片完整性

问题描述 c#接收多个Byte数组,组成Byte数组,转成图片,中间出现丢失字节,如何保证图片完整性 c#接收多个Byte数组,组成Byte数组,转成图片Bitmap,中间出现丢失字节,如何保证图片完整性. 我目前做的是下位机与上位机通信,下位机采用GPRS传输图片到上位机,但是每次只能传输1K,图片大于1K,分多次发送到上位机,当上位机与下位机通讯时,如果中间过程中导致其中一次传输不正确,上位机如何处理才能把图片正常显示出来.也就是说Byte数组转成图片(Bitmap)过程中,Byte数组中一

link中如何定义一个2个字节的byte?除了用byte[2]还有什么做法?

问题描述 link中如何定义一个2个字节的byte?除了用byte[2]还有什么做法? link中如何定义一个2个字节的byte?除了用byte[2]还有什么做法? 解决方案 short就可以了,它正好是2个字节. 用%256是低位,/256是高位 解决方案二: short或unshort

java int转byte和long转byte的方法_java

在网络编程中,出于节约带宽或者编码的需要,通常需要以原生方式处理long和int,而不是转换为string. public class ByteOrderUtils { public static byte[] int2byte(int res) { byte[] targets = new byte[4]; targets[3] = (byte) (res & 0xff);// 最低位 targets[2] = (byte) ((res >> 8) & 0xff);// 次低

CPNtools软件建的petri网可以单次运行,但是想仿真100次,总是出现错误,该怎么解决?

问题描述 CPNtools软件建的petri网可以单次运行,但是想仿真100次,总是出现错误,该怎么解决? CPNtools软件建的petri网可以单次运行,但是想仿真100次,总是出现错误,该怎么解决?

xpage视图中的文档超过100客户端ID重复出错并少一个0

问题描述 page视图中的文档超过100客户端ID重复出错并少一个0做开发时用的是Notes8.5.2版本,突然发现,当视图中的文档超出100个的时候,xpage视图中生成的客户端前台ID标识符居然出错了,从99开始中,100出错为10,101出错为11,接下来的ID一直出错,后来版本有更新,但从100到109的ID标识符还是出错,ID中间似乎少了一个0,,IBM居然出现这样Bug错误..等高人出现,还是等待IBM解决...转自:

世纪佳缘网每月约有100万名用户付费收发信息

摘要: 在中国,互联网用户常常希望享受免费服务,而有一家交友网站的用户每天收发的几十条信息却要按每条人民币2元的价格付费. 世纪佳缘网每月约有100万名用户付费收发信息.由此可 在中国,互联网用户常常希望享受免费服务,而有一家交友网站的用户每天收发的几十条信息却要按每条人民币2元的价格付费. 世纪佳缘网每月约有100万名用户付费收发信息.由此可以看出这样一种趋势:中国一些互联网公司开始通过向用户收取使用费和会员费创收,而不是通过竞争激烈的传统广告业务赚钱. 世纪佳缘主要是通过向用户收取信息收发费

rgb转换byte数组-rgb转byte数组应该怎么处理

问题描述 rgb转byte数组应该怎么处理 我在看YUV420SP转RGB的时候有如下一段java代码if (r < 0) r = 0; else if (r > 262143) r = 262143; if (g < 0) g = 0; else if (g > 262143) g = 262143; if (b < 0) b = 0; else if (b > 262143) b = 262143; rgbBuf[yp * 3] = (byte)(r >>

请教高手:new String(byte).getBytes() 与 byte.clone() 得到的Byte有啥区别

问题描述 在做加密解密时发现将加密后的Byte转成String后再转回Byte 不能正常解密抛出 javax.crypto.IllegalBlockSizeException: Input length must be multiple of 8 when decrypting with padded cipher直接用原加密Byte解密或者Byte.clone()解密正常有谁遇见过这种问题吗是什么原因 解决方案 字符串加密之后得到的二进制串通常意义上已经不是正常的字符串了,如果再编码成字符串的