我有char指针的结构 . 我想为这个struct成员分配静态内存 . 我怎样才能做到这一点?
例:
struct my_data {
int x;
bool y;
char *buf;
};
如何为此char指针分配10个字节的静态内存?我知道malloc分配动态内存分配 . 这个可以吗?
struct my_data data;
char buffer[10];
data.buf = &buffer[0];
PS:我不允许更改此结构并使用malloc分配动态内存 .
1 回答
这将更简单(数组自动衰减到指针):
请注意
buffer
必须具有持续的生命周期,或者您必须确保's not deallocated (i.e. routine where it is declared returns) while you'正在使用它或引用它 .从子例程分配并返回将导致未定义的行为,因为内存将在返回时被释放 .
例如,不要这样做(正如我们在这里经常看到的那样):
由这种UB引入的错误是令人讨厌的,因为代码似乎工作了一段时间,直到未分配的缓冲区被另一个函数调用破坏 .