检测到堆损坏:在正常块(#62)之后
Heap corruption detected: after normal block(#62)
I code
#include<stdio.h>
#include<conio.h>
void Nhap(int *x, int y)
{
for(int i=0; i<y; i++)
{
printf("x[%d] = ",i);
scanf("%d",&x[i]);
}
}
void Chen(int *a, int *b, int n, int m, int k)
{
int c[100];
int x=0;
for(int i=k; i<n; i++)
{
c[x]=a[i];
x++;
}
c[x]=' ';
x=0;
for(int i=k; i<m+k; i++)
{
a[i]=b[x];
x++;
}
x=0;
for(int i=k+m; i<m+n; i++)
{
a[i]=c[x];
x++;
}
for(int i=0; i<m+n; i++)
printf("%2d",a[i]);
}
void main()
{
int m, n, k=0;
printf("Enter element of b: "); scanf("%d",&m);
int *b=new int(m);
printf("Enter element of a: "); scanf("%d",&n);
int *a=new int(m+n);
printf("nNhap a: ");
Nhap(a,n);
printf("nNhap b: ");
Nhap(b,m);
printf("nEnter k: "); scanf("%d",&k);
Chen(a,b,n,m,k);
delete[] a;
delete[] b;
a=nullptr;
b=nullptr;
getch();
}
我遇到错误:检测到堆损坏:在正常块"#62"之后。
我不知道。谢谢你的帮助。提前非常感谢你。我是 C 的新手,我正在尝试修复错误但效果不佳。我删除 删除[]a 删除[]b是成功的。我不明白。
语句
int *b=new int(m);
只分配一个整数,并将其初始化为值 m
。如果要分配m
整数数,请使用
int *b=new int[m];
相关文章:
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 检测到堆损坏:在正常块 c++ 动态 2D 数组之后
- for循环块之后的分号
- 使用解脱脱在 if-else 块之后添加换行符
- 将在 CATCH 块之后执行代码
- 分离的情况 std::线程在 parrent 线程离开其块之后
- 在普通块(#164)之后检测到堆损坏
- 检测到堆损坏:在正常块(#62)之后
- 检测到堆损坏:在正常块(#126)之后
- 检测到堆损坏:在正常块 () 之后
- 是否可以保证在用括号括起来的块之后不会清洁堆栈?
- 块和表达式必须具有常量值错误
- 在删除行的正常块之后检测到堆损坏
- 在正常块之后检测到堆损坏(#181)
- 为什么第一个值是2814,而不是在我删除代码块之后
- 执行else块和if块之后的代码
- 未处理的异常,甚至在添加try-catch块之后?c++
- 堆损坏检测:在正常块之后(#153)
- 在正常块之后检测到堆损坏(#174)
- 在0x00DB4E70检测到堆损坏:在正常块(#151)之后