写了一个结构体,假设名字叫abc,然后,在一个方法体中,用了一个memcpy(&abc + 1, def, strlen(def)),于是乎,在方法体运行到最后时,蹦出一个stack around the variable abc was corrupted.
请教各位大侠,问题应该是由于&abc+1后面添加了些内容导致abc被破坏的吧?那应该怎么做才能避免abc被破坏呢?
请教各位大侠,问题应该是由于&abc+1后面添加了些内容导致abc被破坏的吧?那应该怎么做才能避免abc被破坏呢?
解决方案 »
- UI求教:实现类似于WIN7下Media player的音量滑动条
- MFC,请问两个分割的视图怎么用同一个定时器啊,谁有例子程序啊?
- CString字符串如何插入\0
- 请教 如和获得程序本身exe文件的目录?
- 进程与临界资源问题
- 急!!!用MFC作的SDI程序有断言错!
- 中国高手们黑了它http://zhina444.allhere.com/,为国,为了分,请大家UP,直到它被黑
- 怎么搭建SQL SERVER分布式数据库?
- MFC 将窗口设置为选中状态 多文档opengl 窗口分割
- 谁知道阴阳历如何转换?(要算法)
- 如何判断一个点是否在一个多边形内
- 自绘按钮响应ON_BN_CLICKED消息范围的问题
如果非要如此
void func()
{
abc obarray[2];
memcpy(&abc + 1, def, strlen(def));
}
1)结构体中不能还有指针,如果还有指针,则百分之百不能这样拷贝,这样拷贝肯定会有问题。
2)可能不能用 strlen(abc)来求值,这个主要是跟编译器的设置有关系,在以前的很多帖子中都有关于结构体求值得问题,这主要是和内存的对齐方式有关系。碰到这种问题,老实的办法,就是分别为结构体中的各个元素分别赋值。