我是C ++领域的新手。
在行var data = {
"range": ["2018-07-23T16:03:26.861Z", "2018-07-23T16:03:26.861Z"]
}
var result = [];// for ouput
var strKey=Object.keys(data)[0];//key of main object.i.e. range
var objData=data[strKey];//value of key
for (let i = 0; i < objData.length; i++) {
result.push(getFormattedDate(objData[i]));
}
var prepend=strKey+"(";//prepended
var postpend=")";//postpender
result =prepend+result.join(",") + postpend;
console.log(result);
function getFormattedDate(date) {
return date.split("T")[0].replace(/-/g,'');
}
上引发了
在Memcpy.exe中的0x0FB046EE(vcruntime140d.dll)处引发了异常: 0xC0000005:访问冲突读取位置0x00544000。
为什么会这样?
memcpy(combined + 14 + 40, pThirdPart, size);
答案 0 :(得分:2)
pThirdPart
指向thirdPart
的地址,而不是*thirdPart
指向的地址。
您可能会感到困惑,因为数组的地址与指针的地址不同。当你有一个像这样的数组
char array[10];
获取该变量的地址与不使用and索引引用它相同。 array
与&array
的值相同。
但是有了指针,情况就不同了
char *pointer;
pointer
与&pointer
这只是您必须了解的C / C ++怪癖。
所以在您的程序中应该有
BYTE *pFirstPart = reinterpret_cast<BYTE*>(&firstPart);
BYTE *pSecondPart = reinterpret_cast<BYTE*>(&secondPart);
BYTE *pThirdPart = reinterpret_cast<BYTE*>(thirdPart);
甚至
BYTE *pFirstPart = reinterpret_cast<BYTE*>(firstPart);
BYTE *pSecondPart = reinterpret_cast<BYTE*>(secondPart);
BYTE *pThirdPart = reinterpret_cast<BYTE*>(thirdPart);
两种变体都可以使用。