在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/C  網(wǎng)絡(luò)安全/ 編譯能過去,但是報錯

編譯能過去,但是報錯

遇到了一個奇怪的問題

程序簡化之后大概是這樣,先輸入一個整數(shù)n,然后輸入n個整數(shù)存入數(shù)組
再輸入一個整數(shù)m,然后輸入m個整數(shù)存入數(shù)組
是要求交集的,結(jié)果在for循環(huán)里就出了問題,只要在for循環(huán)里出現(xiàn)賦值操作就報錯呢
例如我寫的flag=5,但是temp = *(bp+i);temp++就可以..求教咋回事呢?

#include <stdlib.h>
#include <stdlib.h>
int main(void){
    int a,b;
    int i,j;
    int flag;
    int *ap = (int *)malloc(sizeof(int)*a);
    int *bp = (int *)malloc(sizeof(int)*b);

    scanf("%d",&a);
    for(i=0;i<a;i++){
        scanf("%d",ap+i);
    }

    scanf("%d",&b);
    for(i=0;i<b;i++){
        scanf("%d",bp+i);
    }

    /************交集********************/

    int *p = (int *)malloc(sizeof(int)*(a+b));
    int *temp = p;
    for(i=0;i<a;i++){  //裝入a
        *(p+i) = *(ap+i);
    }
    temp = temp + a ; //指針挪過來

    for(i=0;i<b;i++){  //裝入b

        flag = 5 ;

        /*temp = *(bp+i);
        temp++;*/
    }

    //printfArr(p,a);
    //printfArr(p,a+b);
    return 0;
}
回答
編輯回答
汐顏

你在用malloc申請數(shù)組空間的時候a,b還沒有賦值,他們倆的值是未定義的。你申請的數(shù)組的長度也不知道多長,所以在給數(shù)組賦值時就會越界。
解決辦法:
把給a,b賦值的兩個scanf語句放到Malloc之前。

2018年8月24日 15:34
編輯回答
無標題

解決了

int ap = (int )malloc(sizeof(int)*a);
int bp = (int )malloc(sizeof(int)*b);

這里越界了

2017年9月4日 14:28