相关疑难解决方法(0)

如何从C中的指针获取数组的大小?

我已经分配了一个像这样mystruct大小的"数组" n:

if (NULL == (p = calloc(sizeof(struct mystruct) * n,1))) {
 /* handle error */
}
Run Code Online (Sandbox Code Playgroud)

后来,我只能访问p,不再拥有n.有没有办法只给出指针确定数组的长度p

我认为它必须是可能的,因为free(p)就是这样.我知道malloc()它记录了它分配了多少内存,这就是它知道长度的原因; 也许有办法查询这些信息?就像是...

int length = askMallocLibraryHowMuchMemoryWasAlloced(p) / sizeof(mystruct)
Run Code Online (Sandbox Code Playgroud)

我知道我应该修改代码,以便我知道n,但如果可能,我宁愿不这样做.有任何想法吗?

c malloc pointers memory-management

66
推荐指数
4
解决办法
4万
查看次数

为什么我们可以删除数组,但不知道C/C++中的长度?

我们有可能删除动态分配的数组,但我们无法找出它们有多少个元素?我们不能只根据每个对象的大小来划分内存位置的大小吗?

c c++ arrays

18
推荐指数
3
解决办法
1013
查看次数

标签 统计

c ×2

arrays ×1

c++ ×1

malloc ×1

memory-management ×1

pointers ×1