在堆栈上分配数组/指针

时间:2019-10-24 10:22:49

标签: c arrays pointers

在堆栈上分配内存的标准过程是什么?我目前正在创建一个临时数组

const uint8_t _buf[buf_size];
const uint8_t* buf = _buf;

我再也不会使用_buf。我很脏有更好的方法吗?

编辑:

我需要指针的原因是因为我将其传递给一个递增指针的函数。我不认为这与传递数组会很好。这里是更多详细信息:

const uint8_t _buf[buf_size];
const uint8_t* buf = _buf;
buf_size = fread((void *)buf, 1, buf_size, file);
// f increments the pointer in buf
f(&buf, &buf_size);

2 个答案:

答案 0 :(得分:4)

您可以使用compound literal

uint8_t* buf = (uint8_t[buf_size]){0};

在我的许多程序中,无论如何我都使用两个变量,因为如果调试器具有可读的名称,则更容易使用调试器跟踪内存。

答案 1 :(得分:3)

您可以使用alloca阅读alloca

   const uint8_t* buf  = alloca(buf_size);

基本上,它在堆栈中分配大小字节的空间        呼叫者的框架。

我并不是说使用alloca是更标准化的方式,但是至少您有机会检查alloca的返回值。

相关问题