Obj *op = new Obj;
Obj *op2 = op;
delete op;
delete op2; // What happens here?
Run Code Online (Sandbox Code Playgroud)
当你意外地双重删除时,最糟糕的情况是什么?有关系吗?编译器会抛出错误吗?
我正在将我的开发环境迁移到10.8,但是我遇到了pip的问题.
具体来说,我正在使用virtualenvs/virtualwrapper但不能pip install psycopg2
,并且在构建psycopg2._psycopg
扩展时,我得到:
unable to execute /usr/bin/clang: No such file or directory
error: command '/usr/bin/clang' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)
任何人都可以提供解决方案吗?
请考虑以下代码:
char* p = new char[2];
long* pi = (long*) p;
assert(p == pi); // OK
char* p1 = &p[1];
long* pi1 = (long*) p1;
assert(p1 == pi1); // OK
int d = p1 - p;
int d1 = pi1 - pi;
assert(d == d1); // No :(
Run Code Online (Sandbox Code Playgroud)
在此之后跑,我得d == 1
和d1 == 0
,虽然p1 == pi1
和p == pi
(我在调试器中检查这一点).这是未定义的行为吗?
我在Python 2.6上有一个包含与此类似的部分的脚本:
import sys
list_id='cow'
prev=[0,'cow']
try:
if list_id==prev[1]:
print '{0} is the same as {1}'.format(list_id,prev[1])
sys.exit(0)
except:
print 'exception occurred, exiting with error'
sys.exit(1)
Run Code Online (Sandbox Code Playgroud)
我注意到虽然它打印的是"相同"的行,但它也会记录异常!
如果删除try/except块,则解释器不会显示错误.如果捕获到ValueError之类的特定错误,则不执行except块.
import sys
list_id='cow'
prev=[0,'cow']
try:
if list_id==prev[1]:
print '{0} is the same as {1}'.format(list_id,prev[1])
sys.exit(0)
except Exception as k:
print 'exception occurred, exiting with error. Exception is:'
print k.args
sys.exit(1)
Run Code Online (Sandbox Code Playgroud)
不执行except块,并且该过程以返回码0结束.因此,异常在层次结构中的异常之上?
import sys
list_id='cow'
prev=[0,'cow']
try:
if list_id==prev[1]:
print '{0} is the same as {1}'.format(list_id,prev[1])
sys.exit(0)
except BaseException as k:
print 'exception occurred, …
Run Code Online (Sandbox Code Playgroud) 实际上,我有三种方法来确定文件大小:
那么确定文件大小的实际正确方法是什么?什么是最糟糕的方式?或者甚至不重要,因为最后它们都是一样的?
(我可以想象第一种方法对于非常大的文件有问题,而另外两种方法没有)
c++ ×2
python ×2
exception ×1
filesize ×1
memory-leaks ×1
pip ×1
pointers ×1
postgresql ×1
psycopg2 ×1
python-2.6 ×1