在堆栈上分配数组/指针

问题描述 投票:2回答:2

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

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

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

c
2个回答
1
投票

您可以使用alloca读取alloca

   const uint8_t* buf  = alloca(buf_size);

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

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


0
投票

您可以使用compound literal

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

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

© www.soinside.com 2019 - 2024. All rights reserved.