tmp_buf = (char *)malloc(size)不可以直接使用`sizeof`来查看动态分配内存的大小。在C语言中,`sizeof`操作符是在编译时确定类型或对象的大小,并不能用于动态获取malloc分配的内存大小。
下面解释为什么不能用`sizeof(tmp_buf)`查看动态分配的内存大小:
1. 编译时 vs 运行时: sizeof是编译时操作符,计算的是类型大小或者静态声明的数组大小。而`malloc`是在运行时请求内存,其返回的是一个指向分配内存块的指针。
2. 指针大小: 在`tmp_buf`是一个指向已分配内存的指针时,`sizeof(tmp_buf)`返回的是指针的大小(在大多数平台上是4字节或8字节),而不是实际分配的内存大小。
查看内存大小的正确方法
通常在进行内存分配后,开发者应该自己记录下分配的内存大小。需要管理和追踪内存分配,可以使用数据结构(例如结构体)来保存相关信息。
以下是一种实现方法:
typedef struct {
char *buffer;
size_t size;
} Buffer;
Buffer allocate_buffer(size_t size) {
Buffer buf;
buf.buffer = (char *)
标签:tmp,内存大小,C语言,sizeof,指针,buf,size
From: https://blog.csdn.net/eidolon_foot/article/details/142906440