我想出了這個作爲調試問題的快速解決方案 - 我有指針變量和它的類型,我知道它指向堆上分配的對象數組,但我不知道有多少。所以我寫了這個函數來查看存儲內存分配到堆時的字節數的cookie。看看C++新的[] cookie。這個代碼是多麼便攜?
template< typename T >
int num_allocated_items(T *p)
{
return *((int*)p-4)/sizeof(T);
}
//test
#include <iostream>
int main(int argc, char *argv[])
{
using std::cout; using std::endl;
typedef long double testtype;
testtype *p = new testtype[ 45 ];
//prints 45
std::cout<<"num allocated = "<<num_allocated_items<testtype>(p)<<std::endl;
delete[] p;
return 0;
}
我想知道這個代碼的便攜性。
正如我懷疑。乾杯。舊版代碼 – Carl 2010-05-04 00:57:45