c++指针怎么知道指向内存的大小

如题所述

Type* Tmp = reinterpret_cast<Type*>(ptr);你可以试试,没有任何人知道内存有多大,你只能知道你在用什么类型去使用这个内存,而那个类型的大小你是知道的(编译器会帮你计算的).
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-07-22
刚才那有点问题,大小是在你分配内存的时候决定的,光靠一指针是不可能知道的,因为它完全可以是一指向数组的指针。
第2个回答  2009-07-22
你应该知道得最清楚
运行库动态管理器知道个大概(内存分配已块为单位不是字节)
指针只知道开始不知道大小
你要不知道就没人知道了
第3个回答  2009-07-22
sizeof(type)
sizeof(name)
第4个回答  2009-07-22
p 是一个指针, *p就是指针所指向的对象,sizeof(*p)就可以求出指针可以指向对象的大小,也就是你说的指向内存的大小,举个例子
struct stu
{
int age ;
double score ;
};
int main()
{
struct stu student ;
struct stu *p = &student ;
int i = sizeof(p);
cout <<i <<endl ; //这个输出的是指针本身的大小
int j = sizeof(*p) ;
cout << j << endl ; //这个就是指针指向对象的大小
return 0;
}本回答被网友采纳

c++指针怎么知道指向内存的大小
Type* Tmp = reinterpret_cast<Type*>(ptr);你可以试试,没有任何人知道内存有多大,你只能知道你在用什么类型去使用这个内存,而那个类型的大小你是知道的(编译器会帮你计算的).

C++ 怎么得到字符串指针指向的内存块的大小?
但是实际指向内存块的大小,是无法知道的。这是因为指针在作为参数传递的时候,只传过来了地址值,而没有传过来任何长度信息 实际上指针的长度信息是编译阶段获取的,而函数参数无法包含这种信息,故而不可能从指针参数获得指向空间的大小,即是貌似可以的方法,得到的长度也是不可靠的 ...

c\/c++的指针大小如何确定?
sizeof(p2)得到的是指针变量p2的大小,p2存储的是一个地址,32位系统环境就是4个字节,所以这里是4 int *p2 = new int[100]; 这句是分配了4*sizeof(int)这么大的内存空间,让p2指向了这段内存空间的首地址,并不是把p2变成了数组,p2还是那个p2,是个指针变量,只占4个字节的内存空间。

C++中如何来测量一个数组空间的大小或者一个变量(比如说字符串变量...
对于字符串,或其他指针,需要先计算字符串长度,然后乘以每个字符的大小,比如 char* p = "12345";int n = strlen( p );int size = (n+1) * sizeof(char);

c\/c++怎样检测指针是否已经分配空间
int * p;声明了一个指针变量 p,就为它分配了内存了,它占2字节大小的内存。如果你说 p = new int[2];才算是分配内存,那我告诉你,这句话的意思:通过new 向系统申请sizeof(int) * 2的内存大小,接下来把这块内存的地址返回,并保存在p中。并不是说p有2个int大小的内存呢。~~~int * ...

怎么区分指针所指向的内存的大小
1. 指针的大小,所有指针的大小都是32位的,sizeof(int*)跟sizeof(double*)都等于4 2. 指针指向内存的大小是不一定的,这个大小保存在进程内存管理链表中,目前在用户层编程还没有方法能获取到。3. 指针的访问 实际上你可以理解成 *p = p[0]; 具体的访问手段与你的p指针的类型定义有关,编译...

C++调试中,怎样看到指针指向空间中的所有数据
有办法,调试的时候在想看的数组上点右键,选择QuickWatch,弹出一个窗口后,如果你想要看这个数组的前10个元素,就在第一个编辑框数组名的后面写逗号,然后10,想看100个元素,就写个逗号,写个100

C++如何获得vector已使用内存的大小
比如 :include <stdio.h> include <vector> void main(){ std::vector<int> vcData;printf("内存大小为:%d\\n", vcData.capacity() * sizeof( int ));}

c++指针怎么比大小
假设有两个整型指针p,q的声明为int* p, q;如果直接比大小如p > q,比较的是指向的数据在内存中的先后关系 若要比较指针指向的数据的大小,应用*运算符获取指针指向的值再进行比较,如*p > *q、*p == *q

如何在C++中检测一个指针是否指向堆内存
{\/\/指针有效}else{\/\/指针无效}然而这样的判断方法需要有一个前提保证的,即是前面所说的在声明指针时如果没有明确指向一个已知的变量,则将其置空,在不再需要使用这个指针时也将其置空。如果该指针指向一块动态分配的内存空间,在释放后也应该将其置空。在这个前提下,前面判断才是正确的 ...

相似回答