|
|
gōng lín shí jì cún huò wù de dì fāng。 |
|
lín shí jì cún huò wù de dì fāng |
|
gōng lín shí cún fàng huò wù de dì fāng。 guō mò ruò《 hóng bō qū》 dì bā zhāng sān: “ yòu yī cì hè zhōng hán jìng yú yè bàn tū rán sōu chá fú wù chù de duī zhàn , dàn shénme yě méi yòu chá chū。 ” |
|
zài jì suàn jī lǐng yù, duī zhàn shì yī gè bù róng hū shì de gài niàn, dàn shì hěn duō rén shèn zhì shì jì suàn jī zhuān yè de rén yě méi yòu míng què duī zhàn qí shí shì liǎng zhǒng shù jù jié gòu。
duī zhàn dōushì yī zhǒng shù jù xiàng 'àn xù pái liè de shù jù jié gòu, zhǐ néng zài yī duān ( chēng wéi zhàn dǐng (top)) duì shù jù xiàng jìn xíng chā rù hé shān chú。
yào diǎn:
duī: shùn xù suí yì
zhàn: xiān jìn hòu chū (last-in/first-out) |
|
yī、 yù bèi zhī shí héng chéng xù de nèi cún fēn pèi
yī gè yóu c/c++ biān yì de chéng xù zhàn yòng de nèi cún fēn wéi yǐ xià jǐ gè bù fēn
1、 zhàn qū( stack) héng yóu biān yì qì zì dòng fēn pèi shì fàng, cún fàng hán shù de cān shù zhí, jú bù biàn liàng de zhí děng。 qí cāo zuò fāng shì lèi sì yú shù jù jié gòu zhōng de zhàn。
2、 duī qū( heap) héng yī bān yóu chéng xù yuán fēn pèi shì fàng, ruò chéng xù yuán bù shì fàng, chéng xù jié shù shí kě néng yóu os huí shōu。 zhù yì tā yǔ shù jù jié gòu zhōng de duī shì liǎng huí shì, fēn pèi fāng shì dǎo shì lèi sì yú liàn biǎo。
3、 quán jú qū( jìng tài qū)( static) héng, quán jú biàn liàng hé jìng tài biàn liàng de cún chǔ shì fàng zài yī kuài de, chū shǐ huà de quán jú biàn liàng hé jìng tài biàn liàng zài yī kuài qū yù, wèi chū shǐ huà de quán jú biàn liàng hé wèi chū shǐ huà de jìng tài biàn liàng zài xiāng lín de lìng yī kuài qū yù。 - chéng xù jié shù hòu yóu xì tǒng shì fàng。
4、 wén zì cháng liàng qū héng cháng liàng zì fú chuàn jiù shì fàng zài zhè lǐ de。 chéng xù jié shù hòu yóu xì tǒng shì fàng。
5、 chéng xù dài mǎ qū héng cún fàng hán shù tǐ de 'èr jìn zhì dài mǎ。
èr、 lì zǐ chéng xù
zhè shì yī gè qián bèi xiě de, fēi cháng xiáng xì
//main.cpp
inta=0; quán jú chū shǐ huà qū
char*p1; quán jú wèi chū shǐ huà qū
main()
{
intb; zhàn
chars[]="abc"; zhàn
char*p2; zhàn
char*p3="123456";123456 在常 liàng qū, p3 zài zhàn shàng。
staticintc=0; quán jú( jìng tài) chū shǐ huà qū
p1=(char*)malloc(10);
p2=(char*)malloc(20);
}
fēn pèi dé lái dé 10 hé 20 zì jié de qū yù jiù zài duī qū。
strcpy(p1,"123456");123456 放在常 liàng qū, biān yì qì kě néng huì jiāng tā yǔ p3 suǒ zhǐ xiàng de "123456" yōu huà chéng yī gè dì fāng。 |
duī hé zhàn de lǐ lùn zhī shí |
1. shēn qǐng fāng shì
stack:
yóu xì tǒng zì dòng fēn pèi。 lì rú, shēng míng zài hán shù zhōng yī gè jú bù biàn liàng intb; xì tǒng zì dòng zài zhàn zhōng wéi b kāipì kōng jiān
heap:
xū yào chéng xù yuán zì jǐ shēn qǐng, bìng zhǐ míng dà xiǎo, zài c zhōng malloc hán shù
rú p1=(char*)malloc(10);
zài c++ zhōng yòng new yùn suàn fú
rú p2=(char*)malloc(10);
dàn shì zhù yì p1、 p2 běn shēn shì zài zhàn zhōng de。
2. shēn qǐng hòu xì tǒng de xiǎng yìng
zhàn: zhǐ yào zhàn de shèng yú kōng jiān dà yú suǒ shēn qǐng kōng jiān, xì tǒng jiāng wéi chéng xù tí gōng nèi cún, fǒu zé jiāng bào yì cháng tí shì zhàn yì chū。
duī: shǒu xiān yīnggāi zhī dào cāo zuò xì tǒng yòu yī gè jì lù kòngxián nèi cún dì zhǐ de liàn biǎo, dāng xì tǒng shōu dào chéng xù de shēn qǐng shí, huì biàn lì gāi liàn biǎo, xún zhǎo dì yī gè kōng jiān dà yú suǒ shēn qǐng kōng jiān de duī jié diǎn, rán hòu jiāng gāi jié diǎn cóng kòngxián jié diǎn liàn biǎo zhōng shān chú, bìng jiāng gāi jié diǎn de kōng jiān fēn pèijǐ chéng xù, lìng wài, duì yú dà duō shù xì tǒng, huì zài zhè kuài nèi cún kōng jiān zhōng de shǒu dì zhǐ chù jì lù běn cì fēn pèi de dà xiǎo, zhè yàng, dài mǎ zhōng de _delete_ yǔ jù cái néng zhèng què de shì fàng běn nèi cún kōng jiān。 lìng wài, yóu yú zhǎo dào de duī jié diǎn de dà xiǎo bù yī dìng zhèng hǎo děng yú shēn qǐng de dà xiǎo, xì tǒng huì zì dòng de jiāng duō yú de nà bù fēn chóngxīn fàng rù kòngxián liàn biǎo zhōng。
3. shēn qǐng dà xiǎo de xiàn zhì
zhàn: zài windows xià , zhàn shì xiàng dī dì zhǐ kuò zhǎn de shù jù jié gòu, shì yī kuài lián xù de nèi cún de qū yù。 zhè jù huà de yì sī shì zhàn dǐng de dì zhǐ hé zhàn de zuì dà róng liàng shì xì tǒng yù xiān guī dìng hǎo de, zài windows xià, zhàn de dà xiǎo shì 2m( yě yòu de shuō shì 1m, zǒng zhī shì yī gè biān yì shí jiù què dìng de cháng shù), rú guǒ shēn qǐng de kōng jiān chāo guò zhàn de shèng yú kōng jiān shí, jiāng tí shì overflow。 yīn cǐ, néng cóng zhàn huò dé de kōng jiān jiào xiǎo。
duī: duī shì xiàng gāo dì zhǐ kuò zhǎn de shù jù jié gòu, shì bù lián xù de nèi cún qū yù。 zhè shì yóu yú xì tǒng shì yòng liàn biǎo lái cún chǔ de kòngxián nèi cún dì zhǐ de, zì rán shì bù lián xù de, ér liàn biǎo de biàn lì fāng xiàng shì yóu dī dì zhǐ xiàng gāo dì zhǐ。 duī de dà xiǎo shòu xiàn yú jì suàn jī xì tǒng zhōng yòu xiào de xū nǐ nèi cún。 yóu cǐ kě jiàn, duī huò dé de kōng jiān bǐ jiào líng huó, yě bǐ jiào dà。
4. shēn qǐng xiàolǜ de bǐ jiào
zhàn yóu xì tǒng zì dòng fēn pèi, sù dù jiào kuài。 dàn chéng xù yuán shì wú fǎ kòng zhì de。
duī shì yóu new fēn pèi de nèi cún, yī bān sù dù bǐ jiào màn, ér qiě róng yì chǎn shēng nèi cún suì piàn , bù guò yòng qǐ lái zuì fāng biàn .
lìng wài, zài windows xià, zuì hǎo de fāng shì shì yòng virtualalloc fēn pèi nèi cún, tā bù shì zài duī, yě bù shì zài zhàn , ér shì zhí jiē zài jìn chéng de dì zhǐ kōng jiān zhōng bǎo liú yī kuài nèi cún, suī rán yòng qǐ lái zuì bù fāng biàn。 dàn shì sù dù kuài, yě zuì líng huó
5. duī hé zhàn zhōng de cún chǔ nèi róng
zhàn: zài hán shù diào yòng shí, dì yī gè jìn zhàn de shì zhù hán shù zhōng hán shù diào yòng hòu de xià yī tiáo zhǐ lìng( hán shù diào yòng yǔ jù de xià yī tiáo kě zhí xíng yǔ jù) de dì zhǐ, rán hòu shì hán shù de gè gè cān shù, zài dà duō shù de c biān yì qì zhōng, cān shù shì yóu yòu wǎng zuǒ rù zhàn de, rán hòu shì hán shù zhōng de jú bù biàn liàng。 zhù yì jìng tài biàn liàng shì bù rù zhàn de。
dāng běn cì hán shù diào yòng jié shù hòu, jú bù biàn liàng xiān chū zhàn, rán hòu shì cān shù, zuì hòu zhàn dǐng zhǐ zhēn zhǐ xiàng zuì kāi shǐ cún de dì zhǐ, yě jiù shì zhù hán shù zhōng de xià yī tiáo zhǐ lìng, chéng xù yóu gāi diǎn jì xù yùn xíng。
duī: yī bān shì zài duī de tóu bù yòng yī gè zì jié cún fàng duī de dà xiǎo。 duī zhōng de jù tǐ nèi róng yòu chéng xù yuán 'ān pái。
6. cún qǔ xiàolǜ de bǐ jiào
chars1[]="aaaaaaaaaaaaaaa";
char*s2="bbbbbbbbbbbbbbbbb";
aaaaaaaaaaa shì zài yùn xíng shí kè fù zhí de;
ér bbbbbbbbbbb shì zài biān yì shí jiù què dìng de;
dàn shì, zài yǐ hòu de cún qǔ zhōng, zài zhàn shàng de shù zǔ bǐ zhǐ zhēn suǒ zhǐ xiàng de zì fú chuàn ( lì rú duī ) kuài。
bǐ rú:
#include
voidmain()
{
chara=1;
charc[]="1234567890";
char*p="1234567890";
a=c;
a=p;
return;
}
duì yìng de huì biān dài mǎ
10:a=c;
004010678a4df1movcl,byteptr[ebp-0fh]
0040106a884dfcmovbyteptr[ebp-4],cl
11:a=p;
0040106d8b55ecmovedx,dwordptr[ebp-14h]
004010708a4201moval,byteptr[edx+1]
004010738845fcmovbyteptr[ebp-4],al
dì yī zhǒng zài dú qǔ shí zhí jiē jiù bǎ zì fú chuàn zhōng de yuán sù dú dào jì cún qì cl zhōng, ér dì 'èr zhǒng zé yào xiān bǎ zhǐ zhēn zhí dú dào edx zhōng, zài gēn jù edx dú qǔ zì fú, xiǎn rán màn liǎo。
7. xiǎo jié:
duī hé zhàn de qū bié kě yǐ yòng rú xià de bǐ yù lái kàn chū:
shǐ yòng zhàn jiù xiàng wǒ men qù fàn guǎn lǐ chī fàn, zhǐ guǎn diǎn cài( fā chū shēn qǐng)、 fù qián、 hé chī( shǐ yòng), chī bǎo liǎo jiù zǒu, bù bì lǐ huì qiē cài、 xǐ cài děng zhǔn bèi gōng zuò hé xǐ wǎn、 shuà guō děng sǎo wěi gōng zuò, tā de hǎo chù shì kuài jié, dàn shì zì yóu dù xiǎo。
shǐ yòng duī jiù xiàng shì zì jǐ dòng shǒu zuò xǐ huān chī de cài yáo, bǐ jiào má fán, dàn shì bǐ jiào fú hé zì jǐ de kǒu wèi, ér qiě zì yóu dù dà。 |
duī hé zhàn de qū bié zhù yào fēn: |
cāo zuò xì tǒng fāng miàn de duī hé zhàn, rú shàng miàn shuō de nà xiē, bù duō shuō liǎo。
hái yòu jiù shì shù jù jié gòu fāng miàn de duī hé zhàn, zhè xiē dōushì bù tóng de gài niàn。 zhè lǐ de duī shí jì shàng zhǐ de jiù shì( mǎn zú duī xìng zhì de) yōu xiān duì liè de yī zhǒng shù jù jié gòu, dì 1 gè yuán sù yòu zuì gāo de yōu xiān quán; zhàn shí jì shàng jiù shì mǎn zú xiān jìn hòu chū de xìng zhì de shù xué huò shù jù jié gòu。
suī rán duī zhàn , duī zhàn de shuō fǎ shì lián qǐ lái jiào, dàn shì tā men hái shì yòu hěn dà qū bié de, lián zhe jiào zhǐ shì yóu yú lì shǐ de yuán yīn。 |
|
duī zhàn shì yī zhǒng cún chǔ bù jiàn, jí shù jù de xiě rù gēn dú chū bù xū yào tí gōng dì zhǐ, ér shì gēn jù xiě rù de shùn xù jué dìng dú chū de shùn xù |
|
duī zhàn
stack
dUIZhQn
duī zhàn (stack) yī zhǒng jù yòu tè dìng jié gòu, yòng yǐ bǎo cún shù jù
( huò dì zhǐ ) de cún chǔ qì huò cún chǔ qū。 qí shù jù xiàng de cún rén yǔ qǔ
chū zūn xún“ hòu jìn xiān chū” de guī zé, rú guǒ yǐ xíng xiàng de fāng shì biǎo shì
qí cún qǔ cāo zuò de luó ji tè diǎn, xiāng dāng yú jǐn yòu yī duān shì gōng shù jù
chū rén de kāi fàng duān, ér lìng yī duān shì fēng bì de, rú tú 1 suǒ shì。 zhèng
shì yóu yú shù jù xiàng zhǐ néng cóng kāi fàng duān ( zhàn dǐng ) cún rén huò qǔ chū, yīn
ér zǒng shì zūn xún“ hòu jìn xiān chū” guī zé de。
… tuī fēn ) tuō
tú 1“ hòu jìn xiān chū” de duī zhǎo jié gòu
miáo shù duī zhàn de yào sù shì dǐng dì zhǐ (51、 )、 zhàn cháng dù (SL) jí
dāng qián zhǐ zhēn (SP)。 wú rèn hé shù jù xiàng cún rén, jí kōng zhàn shí, SP
zhǐ zài zhàn dǐ yǐ xià ; zhàn zhōng cún mǎn liǎo shù jù xiàng shí, SP dào dá zhàn de
dǐng duān, jí SP= dīng。 duī zhàn de jī běn cāo zuò shì shù jù xiàng de cún rén
( huò chēng xià tuī ) yǔ qǔ chū ( huò chēng shàng tuō )。 yóu yú zài rèn hé shí hòu,
zhàn de zhǐ zhēn zǒng shì zhǐ zài zuì jìn yī cì cún rén de shù jù xiàng chù, yīn 'ér
zài zài yī cì cún rù xīn shù jù xiàng shí yào xiān shàng yí zhǐ zhēn 'ér hòu cún rén ;
zài yóu zhàn zhōng qǔ chū shù jù shí, zé yào xiān qǔ shù jù 'ér hòu bǎ zhǐ zhēn xià
yí yī gè wèi zhì ; ér qiě, cún rén yǔ qǔ chū de cāo zuò yào yòu jiān shì zhàn mǎn
yǔ zhàn kōng de jiǎn cè bù zhòu。 tú 2 biǎo shì kōng zhàn, cún rén yī xiàng A0,
zài cún rù yī xiàng Al, yòu cún rén yī xiàng rén, ér hòu yòu qǔ chū liǎo yī xiàng
fán de gè zhǒng qíng kuàng。
duī zhàn zài jì suàn jī xì tǒng zhōng yòu zhòng yào de yòng tú。 rú zǐ chéng xù
diào yòng、 zhōng duàn fú wù děng guò chéng jūn yào shè jí dào zhèng cháng zhí xíng shùn xù de
zhuǎn chū yǔ fǎn huí wèn tí, qiě cháng 'àn hòu zhuǎn chū zhě xiān fǎn huí de yuán zé jìn
xíng qiàn tào, yīn 'ér kě yòng duī zhàn jié gòu jìn xíng chǔlǐ。 yǔ yán biān yì xì
tǒng děng yě jīng cháng yòng dào duī zhàn jié gòu。
duī zhàn de shí xiàn kě yǐ tōng guò ruǎn jiàn shǒu duàn, yě kě yǐ shǐ yòng zhuān
mén shè jì de yìng jiàn。 ( liáng yín zǎo )
|
|
- : store house
- n.: dump, godown, stack, store, freight house, storehouse, warehouse, a warehouse, a storage
|
|
huì biān | zhǐ lìng | dān piàn jī | shù jù jié gòu | |
|