可能重复:
如何查找sizeof(指向数组的指针)
例如,使用malloc声明char指针时.有没有办法确定分配的长度.
例如,如果我定义一个char数组,我可以很容易地找到元素的数量
char a[10];
a[0]='c';
cout << sizeof(a) / sizeof(a[0]);
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用char指针,那么会产生10.
char *a;
a = (char*)malloc(10);
a[0] = 'c';
cout << sizeof(a) / sizeof(a[0]);
Run Code Online (Sandbox Code Playgroud)
然后它产生8,这显然是指针的大小,而不是分配的长度.
是否有可能找到char指针的分配长度?
我问这个而不是使用std :: string或其他的原因是因为我在解决一些面试问题时遇到了这个问题.因此出于好奇
小智 6
SomeRandomGuyOnSO:
不,这不对.
我:
是的,它是,但它将是非标准和平台依赖.
除此之外,让我不要重复使用标准C++容器的所有好建议; 让我实际上回答你的问题.对该主题进行快速Google搜索会带来执行此操作的方法.例子:
// OS X
#include <malloc/malloc.h>
char *buf = malloc(1024);
size_t howManyBytes = malloc_size(buf);
printf("Allocated %u bytes\n", (unsigned)howManyBytes);
// Linux
#include <malloc.h>
char *buf = malloc(1024);
size_t howManyBytes = malloc_usable_size(buf);
printf("Allocated %u bytes\n", (unsigned)howManyBytes);
// Windows, using CRT
char *buf = malloc(1024);
size_t howManyBytes = _msize(buf);
printf("Allocated %u bytes\n", (unsigned)howManyBytes);
Run Code Online (Sandbox Code Playgroud)
所有三个片段都应打印1024或更高.
| 归档时间: |
|
| 查看次数: |
13027 次 |
| 最近记录: |