第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如果把size改成一個(gè)定值就可以運(yùn)行且結(jié)果正確,難道是malloc的bug?

如果把size改成一個(gè)定值就可以運(yùn)行且結(jié)果正確,難道是malloc的bug?

慕哥9229398 2023-05-01 12:08:38
RT,這是個(gè)簡(jiǎn)單的代碼處理數(shù)組插入,想在插入時(shí)判斷此時(shí)數(shù)組是否將滿,如果是就將數(shù)組擴(kuò)大的原來(lái)的2倍。不明白為什么int *newspace=(int*)malloc(size*sizet);有什么錯(cuò)誤,如果把size改成一個(gè)定值就可以運(yùn)行且結(jié)果正確,難道是malloc的bug?#include <stdlib.h>//malloc#include <string.h>//memset#include <stdio.h>//printf#define MAXIMUM 100struct SeqList{  int n;  int * array;  int max; };typedef struct SeqList *PSeqList;PSeqList createSeqList(int size){   PSeqList ptrSeqList=(PSeqList)malloc(sizeof(struct SeqList));  if(ptrSeqList==NULL){    return NULL;   }      ptrSeqList->n=0;   ptrSeqList->array=(int*)malloc(size*sizeof(int));   ptrSeqList->max=size;  return ptrSeqList; }int insertElement(int pos, int val, PSeqList pSeqList){  if(pSeqList==NULL)    return -1;     if(pSeqList->n==pSeqList->max){    int size=pSeqList->n<<1;    int sizet=sizeof(int);    int *newspace=(int*)malloc(size*sizet);    memset((void*)newspace,0,size*sizeof(int));    int i=0;    while(i++<pSeqList->max){       newspace[i]=pSeqList->array[i];     }    free(pSeqList->array);     pSeqList->array=newspace;     pSeqList->max<<=1;   }  if(pSeqList->n==0){     pSeqList->array[0]=val;     pSeqList->n++;    return 0;   }  int i;  for(i=pSeqList->n;i>=pos;--i){     pSeqList->array[i+1]=pSeqList->array[i];   }   pSeqList->n++;   pSeqList->array[pos]=val; }void printArray(PSeqList ptrSeqList){  printf("n: %d\n",ptrSeqList->n);  printf("max: %d\n",ptrSeqList->max);  int i=0;  for(i;i<ptrSeqList->n;++i){    printf("%d ",ptrSeqList->array[i]);   } }int main(int argc, char*argv[]){   PSeqList ptrSeqList=createSeqList(5);  printArray(ptrSeqList);  int i=0;  for(i=0;i<10;++i){    insertElement(i,i,ptrSeqList);   }  printArray(ptrSeqList);  insertElement(5,110,ptrSeqList);  printArray(ptrSeqList);  return 0; }
查看完整描述

1 回答

?
溫溫醬

TA貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個(gè)贊

下次記得先使用valgrind自己檢查一遍。

我用valgrind運(yùn)行了一遍,顯示你的代碼在main的

  for(i=0;i<10;++i){
    insertElement(i,i,ptrSeqList);
  }

中,在insertElement的

  int i;  for(i=pSeqList->n;i>=pos;--i){
    pSeqList->array[i+1]=pSeqList->array[i];
  }

中,數(shù)組越界了。


查看完整回答
反對(duì) 回復(fù) 2023-05-03
  • 1 回答
  • 0 關(guān)注
  • 213 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)