2014-02-12 63 views
-1

我代碼堆損壞:正常塊(#62)

#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新手,我嘗試修復錯誤,但imeffectively。 刪除 刪除[] a 刪除[] b 成功。我不明白。

+1

其C++,不C. – Ari

+1

@Ari這看起來更像是'C +' – streppel

+1

@Streppel這是「C具有額外的東西一點點」,而不是「用一點點額外的東西C」與C++一樣? – glglgl

回答

8

聲明

int *b=new int(m); 

只分配一個整數,並將其初始化值m。如果你想分配m數量的整數使用

int *b=new int[m]; 
+1

精彩,確切地說。我成功解決了錯誤。非常感謝你。我愛你。 – Hoang