乙個動態的指標陣列怎樣獲得長度

2021-06-04 11:23:31 字數 742 閱讀 7174

在debug 下 可以解決,但是在release 模式下 不知道如何解決~~

#include

using namespace std;

int getnewbuffersize(void *p)

int main()

{int *arry=new int [10];

for(int i=0;i<10;i++)

arry[i]=0;

cout<

vc6.0 常用的 除錯模式 叫做 debug ... 它產生的.exe檔案 只能在安裝了vc的機器上執行

release 是發行版,,當你的程式 想在別人的機器(沒安裝vc)執行時 ,使用release 模式...

*(int*)((char *)p-16) 原理就是, 當 動態分配 時,會在分配的指標位址前16位元組,儲存乙個

數來 記錄分配的大小.... debug 下為16位元組,但是release 下不知道是多少位元組

首先更正: 是 16個位元組不是 16位...... 讓你帶來了誤解...

原本將乙個int 的指標 變為char指標 是為了 方便 -16個位元組 .... (因為如果int 指標 -1的話是移動4個位元組)

(int *)((char *)p - 16)這樣乙個整型指標進行解引用是什麼含義?

方便啊.. 如果你動態分配的 指標型別不是 int 型的, 而是double 型呢??

那麼(int *)((char *)p - 16) 仍然 適用.......

怎樣在程式裡獲得乙個空指標?

根據語言定義,在指標上下文中的常數 0 會在編譯時轉換為空指標。也就是說,在初始化 賦值或比較的時候,如果一邊是指標型別的值或表示式,編譯器可以 確定另一邊的常數 0 為空指標並生成正確的空指標值。因此下邊的 段完全 合法 char p 0 if p 0 參見問題 5.3。然而,傳入函式的引數不一定...

怎樣運用指標列印乙個簡單的陣列

就算對於利用指標對於乙個陣列進行列印的話,也需要運用迴圈的方式進行列印,只有這樣才能將陣列列印出來.我們在這裡只要讓指標指向首元素所對應的位址上面,在運用迴圈的方式,就可以對其進行列印出來.如下面例題 include include int main int p arr 定義乙個指標並將其首位址賦予...

如何動態定義乙個 物件指標陣列

1 我們先看看如何動態定義乙個char型別 基本型別int float double 的陣列 const int n char a new char n new char n 表示在記憶體中 heap 分配了sizeof char n位元組的空間,並且返回乙個指向所分配記憶體首位址的指標 所以,在這...