我想知道这段代码的含义是什么。我如何确定我的结构“my_struct”可以安全地分配到内存中?
感谢您的帮助。
MyStructType_t my_struct;
int main(void)
{
MyStructType_t *p;
p = malloc (sizeof(MyStructType_t ));
my_struct= *p;
[...]
}
我尝试这个代码(因为编译器没有警告我),即使它没有任何意义,它似乎解决了我的问题,我有一些my_struct字段,我试图解释时没有任何理由删除。< / p>
int main(void)
{
// my main struct have many fields which are initialized
my_struct.flag1 = 1;
my_struct.flag2 = 2;
memset(my_struct.buffer, 0, 10);
[..]
}
void timer_callback( void )
{
// Here i try to parse my buffer to get data from UART
if(my_struct.buffer[0] == 2)
{
// we are ok
// Then I exectute random code to write in eeprom values from the buffer
EEPROM_write(buffer[1]); ...
// If I check the value of flag1, the value has changed to 0.
[...]
}
}
答案 0 :(得分:2)
第一行在静态存储中声明变量my_struct
。
main
的前两行声明了一个指针,并在动态存储中为它分配内存。
第三行将<{1}}(动态存储中)前两行中分配的内存内容复制到第一行(静态存储器)中分配的内存中。
内容本身是未知的并且是垃圾,因此这段代码毫无意义。它会起作用,但main
完成时没有任何意义。