【发布时间】:2011-04-17 18:01:48
【问题描述】:
我的问题是 memcpy/memmove 更改了 struct FOO foo 的指针,它既不是函数的源代码也不是函数的目标地址。以下是 gdb 输出:
memmove(y,y_temp,size_y);之前:
(gdb) p y
$38 = 0xbff7a2e0
(gdb) p y_temp
$39 = (float *) 0x815ea20
(gdb) p foo
$40 = (FOO *) 0x81d4e90
之后:
(gdb) p y_temp
$41 = (float *) 0x343434
(gdb) p y
$42 = 0x343434
(gdb) p foo
$43 = (FOO *) 0x343434
以下是变量的定义:
FOO *foo;
float y[nsamples];
float size_y = nsamples*sizeof(y);
float* y_temp = (float*) malloc(size_y);
我知道,这不是 memcpy/move 的错误,所以我寻找提示,我这边的编程错误可能导致它。
谢谢
【问题讨论】:
标签: c memory-management memcpy memmove