I m developing a C++ DLL that allocate an array for the main application. The function return an error code and not the pointer to the new created array, so the address of the first member will be written in a parameter of the function. Example:
int foo(int** arrayPtr) {
int* array = new int[10];
*arrayPtr = array;
return 0;
}
因此,我的主要职责是:
int* myArray;
int ret;
ret = foo(&myArray);
现在,我的阿雷拉站到了新建立的阵列。
QUESTION 1: Is there a better way to do this?
Than the more interesting question. If I pass NULL as parameter for foo, I generate an Access Violation exception because
*arrayPtr = array;
将以0x00 000字书写。
因此,我增加了一个试捕区。
int foo(int** arrayPtr) {
int* array = new int[10];
try {
*arrayPtr = array;
} catch(...) {
return 1;
}
return 0;
}
我预计,当我把红 f称作准绳时,它将返回。 1. 事实并非如此。 它产生例外。
问题 为什么DL的试捕组群不工作?
感谢大家!
P.S.:在主干 t中,利用尝试捕获物直接产生同样的例外情形,会产生例外(或者更好,它正确处理的是试捕组)。