欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

C++使struct對象擁有可變大小的數(shù)組(詳解)

來源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語言|點(diǎn)擊: 次

首先摘錄《Inside The C++ Object Model》中的一段話:

把單一元素的數(shù)組放在一個(gè)struct的尾端,于是每個(gè) struct objects 可以擁有可變大小的數(shù)組:

struct mumble {

  char pc[1];

};

//獲取一個(gè)字符串,然后為struct本身和該字符串配置足夠的內(nèi)存

struct mumble *pmumbl = (struct mumble*)malloc(sizeof(struct
mumble) + strlen(string) + 1);

strcpy(pmumbl->pc, string);

 

書上已經(jīng)說得很明白,但個(gè)人理解的時(shí)候開始還是出了點(diǎn)問題,錯(cuò)誤地認(rèn)為 mumble 對象的 pc 成員在棧上,以為 strcpy 操作造成數(shù)組溢出而覆蓋了后續(xù)內(nèi)存。

實(shí)際上對象指針pmumbl所指的內(nèi)存全部位于堆上,如下圖所示:

指針 pmumbl 指向的是 malloc 所分配的整個(gè)內(nèi)存,而 pmumbl->pc 指向的是這塊內(nèi)存的第一個(gè)字節(jié),因?yàn)?malloc 操作為整個(gè) string 分配了足夠的內(nèi)存,所以在 strcpy 時(shí),雖然溢出了 pc 的內(nèi)存范圍,但沒有溢出 struct 的內(nèi)存范圍,使得 strcpy 的結(jié)果是合理的和可控的。這樣一來,相當(dāng)于 struct 擁有了可變大小的數(shù)組,更加靈活。

以上就是小編為大家?guī)淼腃++使struct對象擁有可變大小的數(shù)組(詳解)全部內(nèi)容了,希望大家多多支持我們~

上一篇:關(guān)于memcpy和memmove的一點(diǎn)重要說明

欄    目:C語言

下一篇:詳解socket阻塞與非阻塞,同步與異步、I/O模型

本文標(biāo)題:C++使struct對象擁有可變大小的數(shù)組(詳解)

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/1911.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有