如何只通過指標獲取所指內容的大小

2021-08-14 04:55:32 字數 391 閱讀 8807

如何只通過指標獲取所指內容的大小,只要會看記憶體,就能通過指標找到所指內容的大小。

在網上找了許久都沒有找到答案,都說不能通過指標獲取所指內容的大小,抱著好奇的態度去記憶體中尋找,還真讓我給找到了。我用的是linux。

隨便在堆上new一塊位址;

int *p=new int;

跟內存在p值的基礎上減8位元組,會發現有乙個值為0x00000021;當

int *p=new int[7];

會發現有乙個值位0x00000031;

之後會以陣列增加4為等差增加;

為什麼會這樣呢?

因為對於這個指標來說它會有乙個開始的地方和結束的地方,各佔8位元組;以0x00000021開始,以0x0000f181結束;

總歸一句話:類同於分頁機制;

C C 中const變數與指標所指內容的改變

先看乙個很非常相當基礎的c的 哈 void main 大家先想想這個地方的輸出到底應該是什麼吧!include int main 結果輸出 124502455 8說明 b 8確實有替a所在的位址賦值。我在vs2008下編譯輸出彙編檔案,摘選main函式部分彙編 加上我的理解注釋,如下 b 20 si...

如何通過FILE指標獲取檔名

在tc20中,一旦你成功開啟乙個檔案,他將返回乙個檔案指標。file fp fp fopen abc.dat 檔案狀態 如w,r,r 當上面的操作成功後檔案指標fp就會賦予你開啟檔案的最基本資訊!file結構在turbo c在stdio.h檔案中有以下的檔案型別宣告 typedef struct f...

獲取char指標內容的長度

如果能確定所指變數為字串位址,可以用strlen p 取得字串長度。strlen能返回字串的長度是因為它認為到 0 就是結束的地方 sizeof和記憶體無關,只根據資料型別來判斷,而資料型別的長度和作業系統有關1 char a c temp a.txt n intb strlen a 2 char ...