課程
/后端開(kāi)發(fā)
/C
/C語(yǔ)言入門
內(nèi)存空間不能重疊什么意思?
什么情況會(huì)重疊?
2017-09-23
源自:C語(yǔ)言入門 6-8
正在回答
內(nèi)存重疊:拷貝的目的地址在源地址范圍內(nèi)。所謂內(nèi)存重疊就是拷貝的目的地址和源地址
有重疊。
舉個(gè)內(nèi)存重疊環(huán)境的例子:
?
int?main()?
{char?*p?=?NULL;?
p=(char*)malloc(100);?
memcpy(p,"123456789",strlen("123456789"));?//
會(huì)等到錯(cuò)誤的結(jié)果,有一個(gè)長(zhǎng)度參數(shù),只能拷
貝
cnt
個(gè)
//
字節(jié)就結(jié)束了
printf("before?p?=%s\n",p);?
strcpy(p+1,p);?//
注意:這里重疊了,而
strcpy
是根據(jù)判斷原串中的
'\0'?
printf("after?p?=%s\n",p);?
free(p);?
}?
舉報(bào)
C語(yǔ)言入門視頻教程,帶你進(jìn)入編程世界的必修課-C語(yǔ)言
1 回答s1要有足夠的空間來(lái)容納要復(fù)制的字符串???
3 回答4、strcat在使用時(shí)s1與s2指的內(nèi)存空間不能重疊
2 回答使用strcat(s1,s2)時(shí),必須要先定義s1的長(zhǎng)度嗎,而且所定義的長(zhǎng)度要大于s1和s2的長(zhǎng)度之和嗎
1 回答先strcat(s2,s3),然后strcpy(s1,s2)
2 回答為什么strcat(s2,s3); strcat(s1,s2);不能這樣寫?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2017-10-13
內(nèi)存重疊:拷貝的目的地址在源地址范圍內(nèi)。所謂內(nèi)存重疊就是拷貝的目的地址和源地址
有重疊。
舉個(gè)內(nèi)存重疊環(huán)境的例子:
?
int?main()?
{char?*p?=?NULL;?
p=(char*)malloc(100);?
memcpy(p,"123456789",strlen("123456789"));?//
會(huì)等到錯(cuò)誤的結(jié)果,有一個(gè)長(zhǎng)度參數(shù),只能拷
貝
cnt
個(gè)
?
//
字節(jié)就結(jié)束了
?
printf("before?p?=%s\n",p);?
strcpy(p+1,p);?//
注意:這里重疊了,而
strcpy
是根據(jù)判斷原串中的
'\0'?
printf("after?p?=%s\n",p);?
free(p);?
}?