33,318
社区成员
发帖
与我相关
我的任务
分享
extern "C" bool __declspec(dllexport) __stdcall test1(PINT& pvOut, WORD& pvSize)
{
int lvOut[10];
for (int i = 0; i < 10; i++) {
lvOut[i] = i + 1;
}
pvOut = lvOut;
pvSize = 10;
return true;
}
PINT lvRet=NULL;
WORD lvSize=0;
char lvOut[1024 * 10];
int lvLen = 0;
if (test1(lvRet, lvSize)) {
for (int i = 0; i < lvSize; i++) {
int lvVal = *(lvRet + i);
lvLen += sprintf_s(lvOut + lvLen, 1024 * 10 - lvLen, "Element:%d, val:%d\r\n", i, lvVal);
}
CString lvT(lvOut);
ed_log.SetWindowTextW(lvT);
}
数全乱了.
[/quote]
它是未定义的,意思就是你能得到想要的结果,但是并不能保证每次都能得到你想要的结果。[/quote]
谢谢了,请教下面这个Free(lvP)为什么会出错呢, 我的理解 是lvP与lvArray是指向同一块内存的.
void test2(){
const int lvSize = 10;
int *lvArray = (int*)malloc(sizeof(int)*lvSize);//new int[lvSize];
for (int i = 0; i < lvSize; i++){
lvArray[i] = i + 1;
}
PINT lvP = lvArray;
for (int i = 0; i < lvSize; i++){
printf("Element:%d=%d\n", i, *(lvP));
lvP++;
}
free(lvP); //出错
}
[/quote]
它是未定义的,意思就是你能得到想要的结果,但是并不能保证每次都能得到你想要的结果。
