例如:
void test() {
int* a = new int(1);
int ** ap = &a;
int const * b = new int(1);
int const ** bp = &b;
b = a;
// bp = ap; //error
//deletes
}
为什么b = a被接受而bp = ap被拒绝?如果我真的想要bp = ap的效果呢?这是一个可以接受的做法吗?
为了防止崩溃,我总是使用Windows API 检查指针是否有效;特别是检查标志PAGE_NOACCESS,以验证指针是否指向错误的内存分配。如果指针是好的,那么我继续使用它。
我可以使用异常处理来达到同样的效果吗?我想使用try块中的指针进行读/写,然后catch可能的异常以防止崩溃。这会是一种糟糕的做法,甚至是可能的吗?
我在delphiXE2工作,我在PInteger上工作。如果我用delphi代码做这件事
var
P: PInteger;
testInt: Integer;
Scores: array[0..4] of Integer=(33,44,56,78,78);
begin
P := @Scores;
testInt := (P+1)^;
WriteLn(testInt);
ReadLn;
end;
我犯了这个错误。
[DCC Error] Project1.dpr(23): E2015 Operator not applicable to this operand ty
假设我有以下两个类。如何使用类型转换来实现如下所述的效果?我想要的是:我要返回这个+1和这个-1,因为我的两个类在内存中总是连续的。
right *r = new right ();
left* l = (left*)r;
class left : public top {
int b;
operator right * () {
return this + 1;
}
};
class right : public top {
int c;
operator left * () {
return this - 1;