在wcscpy_发生车祸

在wcscpy_发生车祸,c,struct,C,Struct,我在wcscpy中崩溃,而wcscpy工作正常。我有以下结构 struct Test { ... wchar_t identity[256 * 2]; ... }; 我正在将一个结构逐成员复制到另一个结构中。下面的那个正在崩溃 wcscpy_s(t2.identity, sizeof(t2.identity) , t1.identity); 虽然这一个工作正常: wcscpy(t2.identity, t1.identity); 如果您将看到中间的参数是元素的数量,而以

我在
wcscpy
中崩溃,而
wcscpy
工作正常。我有以下结构

struct Test {
...
wchar_t         identity[256 * 2];  
...
};
我正在将一个结构逐成员复制到另一个结构中。下面的那个正在崩溃

wcscpy_s(t2.identity, sizeof(t2.identity) , t1.identity);
虽然这一个工作正常:

wcscpy(t2.identity, t1.identity);
如果您将看到中间的参数是元素的数量,而以字节为单位传递数组的大小

如果使用Visual C++,则可以使用元素来获得元素的数量。

< P>如果你看到中间参数是“强>元素< /强>的数量,而你通过数组的大小<强>字节< <强> > /p>

如果你使用Visual C++,那么你可以使用元素来获取元素的数量。

HMM,这个答案有正确的信息,但是它不能解释OP的问题,除非 T1。标识< /代码>缺少一个终止符,或者是来自其他的<代码>结构> <代码>。UV用于详细说明正确的编码。嗯,这个答案有正确的信息,但它不能解释OP的问题,除非
t1。identity
缺少终止符,或者来自其他具有较大
identity[]
字段的
struct
。UV用于详细说明正确的编码。请注意,您已声明
identity
可容纳512个宽字符
sizeof(t2.identity)
将返回1024个字节(每个
wchar\u t
在Windows中为2个字节)。wcscpy中的第二个参数应该是
sizeof(t2.identity)/sizeof(wchar\t)
,或者按照答案中的建议使用
\u countof
,这将得到512。请注意,您已经声明
identity
可以容纳512个宽字符
sizeof(t2.identity)
将返回1024个字节(每个
wchar\u t
在Windows中为2个字节)。wcscpy中的第二个参数应该是
sizeof(t2.identity)/sizeof(wchar\t)
,或者按照答案中的建议使用
\u countof
,这将得到512。