首先,这里是一些代码:
int main()
{
int days[] = {1,2,3,4,5};
int *ptr = days;
printf("%u\n", sizeof(days));
printf("%u\n", sizeof(ptr));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法找出ptr指向的数组的大小(而不是仅仅给出它的大小,在32位系统上是4个字节)?
分配给动态分配的数组的起始地址的指针是否不具有数组大小的信息?所以我们必须使用另一个变量来存储它的大小,以便稍后通过指针处理数组.
但是当我们释放动态分配的数组时,我们不指定大小,而只是"free ptr"或"delete [] ptr".如何释放或删除知道数组的大小?我们可以使用相同的方案来避免将数组的大小存储在另一个变量中吗?
谢谢!