相关疑难解决方法(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万
查看次数

是否有可能获得指针在Delphi 7中指向的类型的大小?

我希望在以下函数中获得任何"记录"类型的大小.但似乎它不起作用:

function GetDataSize(P : Pointer) : Integer;
begin
  Result := SizeOf(P^); // **How to write the code?**
end;
Run Code Online (Sandbox Code Playgroud)

例如,后续记录的大小为8个字节

SampleRecord = record
 Age1 : Integer;
 Age2 : Integer;
end;
Run Code Online (Sandbox Code Playgroud)

GetDataSize(@a)总是返回1(当然,a是SampleRecord类型的变量).我该怎么办?

我注意到Delphi有一个程序过程New(var P:Pointer),可以分配内存块对应P指向的类型的大小.怎么能达到这个尺寸?

delphi memory-management delphi-7

1
推荐指数
1
解决办法
1913
查看次数

标签 统计

memory-management ×2

c ×1

delphi ×1

delphi-7 ×1

malloc ×1

pointers ×1