gpt4 book ai didi

c - 找到程序中分配的内存?

转载 作者:行者123 更新时间:2023-11-30 14:22:27 26 4
gpt4 key购买 nike

Possible Duplicate:
How can I get the size of an array from a pointer in C?
How can I get the size of a memory block allocated using malloc()?

void func( int *p)
{
// Add code to print MEMORY SIZE which is pointed by pointer p.
}
int main()
{
int *p = (int *) malloc(10 * sizeof(int));
func(p);
}

我们如何从 func() 中的内存指针 P 找到内存大小?

最佳答案

您无法在 C 中以可移植的方式执行此操作。它可能不会存储在任何地方; malloc() 可能会保留比您请求的区域大得多的区域,并且不保证存储有关您请求的大小的任何信息。

您需要使用标准大小,例如 malloc(ARRAY_LEN * sizeof(int))malloc(sizeof mystruct),或者您需要传递指针周围的信息:

struct integers {
size_t count;
int *p;
};

void fun(integers ints) {
// use ints.count to find out how many items we have
}

int main() {
struct integers ints;
ints.count = 10;
ints.p = malloc(ints.count * sizeof(int));
fun(ints);
}

关于c - 找到程序中分配的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13717304/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com