Jee*_*tel 7 c memory-management
在我写的一个函数中:
char *ab;
ab=malloc(10);
Run Code Online (Sandbox Code Playgroud)
然后在另一个函数中我想知道ab指针指向的内存大小.有什么方法我可以知道ab指向10个内存的字符?
不,你没有标准的方法来做到这一点.你必须将指向内存的大小和指针一起传递,这是一个常见的解决方案.
即代替
void f(char* x)
{
//...
}
Run Code Online (Sandbox Code Playgroud)
使用
void f(char *x, size_t length)
{
//....
}
Run Code Online (Sandbox Code Playgroud)
并在你的代码中
char *ab = malloc( 10 );
f( ab, 10 );
Run Code Online (Sandbox Code Playgroud)
这是一个只有 free() 才能确定的秘密。它可能在您的系统中,但以完全依赖于实现的方式。
有点尴尬,但如果你想把一切都放在一起:
类型定义结构
{ // 数据大小后跟数据(C 独有的技巧!不适用于 C++)
整数维度;// 数据元素的数量
整数数据[1];// 可变数量的数据元素
malloc_int_t;
malloc_int_t *ab;
整数维度 = 10;
ab = malloc( sizeof(*ab) + (dimension-1)*sizeof(int) );
ab->尺寸 = 尺寸;
ab->data[n] // 数据访问
我已将数据类型更改为int以使代码成为更通用的模板。