c - 缓冲区大小不正确

标签 c malloc buffer

我正在创建以下缓冲区:

char *buffer;
int buffer_size = 1024;
buffer = (char*) ( malloc(buffer_size * sizeof(char) );

然后当我这样做时:

int actual_size = sizeof(buffer);
printf("Size: %d", actual_size);

它打印的内容是:

size: 4

虽然我期望它是 1024,但这是为什么?

最佳答案

这不是那样的

 sizeof(buffer);

返回buffer的大小,它是一个指针,而不是一个数组。如果您有一个如下所示的数组

 char szArray[100];

然后

 sizeof(szArray);

将返回 100,因为 szArray 是一个数组,但指针不是数组。

关于c - 缓冲区大小不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13404192/

相关文章:

c - 使用 MPI 分散连续的二维数组

c - 将换行符插入 GtkTextView 小部件(GTK+ 编程)

c - 填充 malloc 的内存并转换为 char 数组

c++ - cin.get() 和 cin.put() 的行为

java - 使用 Executors.newFixedThreadPool 的异步 Java NIO 需要帮助

c++ - 将图像写入目录失败

c - 除了 c 中的空终止之外,字符 a 和字符串 a 的存储方式如何不同?

C程序可以编译但不能运行

c - 使用 getchar() 读取输入时出现段错误

c - 九九乘法表问题