我想知道这个代码示例的含义。我如何确保我的名为“my_struct”的结构可以安全地分配在内存中?
感谢您的帮助。
MyStructType_t my_struct;
int main(void)
{
MyStructType_t *p;
p = malloc (sizeof(MyStructType_t ));
my_struct= *p;
[...]
}
我尝试了这段代码(因为编译器没有警告我),即使它没有意义,它似乎也解决了我的问题,即我在尝试解释时, my_struct 的一些字段被无缘无故地删除了。
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.
[...]
}
}
最佳答案
第一行在静态存储中声明变量my_struct
。
main
的前两行声明一个指针并在动态存储中为其分配内存。
第三行将main
前两行(动态存储中)分配的内存内容复制到第一行(静态存储中)分配的内存中贮存)。
内容本身未知,是垃圾,所以这段代码没有意义。它会起作用,但完成后 my_struct
中不会有任何有意义的内容。
关于c - 关于 malloc() 和全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46608069/