c - 使用指针知道数组的大小

标签 c arrays pointers memory sizeof

我如何使用使用 malloc 分配的指针知道数组的大小?

#include <stdio.h>

int main(){
    int *ptr = (int *)malloc(sizeof(int * 10));
    printf("Size:%d",sizeof(ptr));
    free(ptr_one);
    return 0;
}

在这种情况下,我只得到指针的大小,即 8。如何修改代码以获得数组的大小,即 40。

最佳答案

你不能。
您将需要自己记账并跟踪记录。使用 new 分配动态内存,并在释放内存时调用 delete,它知道释放了多少内存,因为语言会在内部处理它,以便用户执行无需为记账操心。如果您仍然明确需要它,那么您需要通过单独的变量来跟踪它。

关于c - 使用指针知道数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18570362/

相关文章:

c - C编程串口发送字符串

c++ - char* str ="ab", str 和 &str 的混淆

java - 为什么 System.arraycopy 在 Java 中是原生的?

pointers - 屏蔽原始指针 (Rust)

c - 使用函数更改指针包含的地址

c++ - 为什么 C/C++ 没有内置包含保护功能?

c - 我如何在 win32 平台上用 C 实现时间驱动的任务?

c - 结构中的二维数组 - 可能吗?

javascript - Polymer 1.0 数组拼接正在删除数组中的错误项目

指向对象 vector 的 C++ 指针,需要访问属性