写了一个结构体,假设名字叫abc,然后,在一个方法体中,用了一个memcpy(&abc + 1, def, strlen(def)),于是乎,在方法体运行到最后时,蹦出一个stack around the variable abc was corrupted.
请教各位大侠,问题应该是由于&abc+1后面添加了些内容导致abc被破坏的吧?那应该怎么做才能避免abc被破坏呢?
请教各位大侠,问题应该是由于&abc+1后面添加了些内容导致abc被破坏的吧?那应该怎么做才能避免abc被破坏呢?
如果非要如此
void func()
{
abc obarray[2];
memcpy(&abc + 1, def, strlen(def));
}
1)结构体中不能还有指针,如果还有指针,则百分之百不能这样拷贝,这样拷贝肯定会有问题。
2)可能不能用 strlen(abc)来求值,这个主要是跟编译器的设置有关系,在以前的很多帖子中都有关于结构体求值得问题,这主要是和内存的对齐方式有关系。碰到这种问题,老实的办法,就是分别为结构体中的各个元素分别赋值。