检测到堆损坏:正常阻塞后(#62)

时间:2014-02-12 13:10:48

标签: c++ heap

我编码

#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]='\0';
    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的新手,我试图修复错误,但我有效。 我删除     删除[]一     删除[] b 是成功的。我不明白。

1 个答案:

答案 0 :(得分:8)

声明

int *b=new int(m);

仅分配一个整数,并将其初始化为值m。如果要分配m个整数,请使用

int *b=new int[m];
相关问题