在以下代码中:
class A {
};
class B : public A {
};
class C : public A {
int x;
};
int main (int argc, char** argv) {
A* b = new B();
A* c = new C();
//in both cases, only ~A() is called, not ~B() or ~C()
delete b; //is this ok?
delete c; //does this line leak memory?
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当使用具有成员函数的非虚析构函数(如C类)调用类上的delete时,内存分配器可以告诉对象的正确大小是什么吗?如果没有,记忆是否泄露?
其次,如果类没有成员函数,并且没有明确的析构函数行为(比如B类),那么一切都好吗?
我问这个是因为我想创建一个扩展的类std::string,(我知道不推荐,但为了讨论它只是承担它),并重载+=,+运算符.-Weffc ++给了我一个警告,因为它std::string有一个非虚拟析构函数,但是如果子类没有成员并且不需要在它的析构函数中做任何事情,这是否重要?
FYI +=重载是进行正确的文件路径格式化,因此可以使用路径类,如:
class …Run Code Online (Sandbox Code Playgroud) 在.NET框架中,有几种方法可以计算MD5哈希值,但有些东西我不明白;
以下有什么区别?是什么让他们与众不同?它们似乎产生相同的结果:
public static string GetMD5Hash(string str)
{
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
byte[] bytes = ASCIIEncoding.Default.GetBytes(str);
byte[] encoded = md5.ComputeHash(bytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < encoded.Length; i++)
sb.Append(encoded[i].ToString("x2"));
return sb.ToString();
}
public static string GetMD5Hash2(string str)
{
System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
byte[] bytes = Encoding.Default.GetBytes(str);
byte[] encoded = md5.ComputeHash(bytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < encoded.Length; i++)
sb.Append(encoded[i].ToString("x2"));
return sb.ToString();
}
Run Code Online (Sandbox Code Playgroud) 我需要对字符串进行排序,然后我想出了以下函数.
def mysort(comb_):
str = []
size = len(comb_)
for c in comb_:
str.append(c)
str.sort()
return ''.join(str)
有没有办法让它紧凑?
我知道这与编程没有直接关系,但我想知道是否有人知道如何将泵浦引理应用于以下证明:
证明L = {(a ^ n)(b ^ n)(c ^ m):n!= m}不是无上下文语言
我对使用抽吸引理非常有信心,但这个真的让我感到厌烦.你怎么看?
我隐约记得几年前读过这篇文章,但我在网上找不到任何参考.
你能给我一个NULL宏没有扩展到0的例子吗?
编辑清晰:今天,它扩展为((void *)0),(0)或(0L).但是,有些架构早已被遗忘,而这种情况并非如此,并且NULL扩展到了不同的地址.就像是
#ifdef UNIVAC
#define NULL (0xffff)
#endif
Run Code Online (Sandbox Code Playgroud)
我正在寻找这样一台机器的例子.
更新以解决问题:
我不是在现行标准的背景下提出这个问题,也不是用不正确的术语来扰乱人们.但是,我接受的答案证实了我的假设:
后来的模型使用了[blah],显然是对所有现存的写得不好的C代码的反应,这些代码做出了错误的假设.
有关当前标准中的空指针的讨论,请参阅此问题.
如何使此功能不仅可以在窗口大小调整上运行,还可以在初始页面加载时运行?
$(window).resize(function() {
...
});
Run Code Online (Sandbox Code Playgroud) 我需要将列表转换为字典,如下所示.奇数元素具有键,偶数元素具有值.
x = (1,'a',2,'b',3,'c') - > {1: 'a', 2: 'b', 3: 'c'}
def set(self, val_):
i = 0
for val in val_:
if i == 0:
i = 1
key = val
else:
i = 0
self.dict[key] = val
Run Code Online (Sandbox Code Playgroud)
获得相同结果的更好方法是什么?
i = iter(k)
print dict(zip(i,i))
Run Code Online (Sandbox Code Playgroud)
好像在起作用
假设您有一个包含1亿行的MySQL 5.0 MyISAM表,在两个整数列上有一个索引(主键除外).
从我对B树结构的不太了解,我认为较低的基数意味着索引的存储效率更好,因为父节点较少.而更高的基数意味着存储效率更低,但读取性能更快,因为它必须通过较少的分支导航才能获得所需的任何数据,以缩小查询的行数.
(注意 - "低"对"高",我并不是说例如100万对比99万对于1亿行表.我的意思是更像是9000万对比9500万)
我的理解是否正确?
相关问题 - 基数如何影响写入性能?
我写了这个小函数来写出HTML标签:
def html_tag(tag, content=None, close=True, attrs={}):
lst = ['<',tag]
for key, val in attrs.iteritems():
lst.append(' %s="%s"' % (key, escape_html(val)))
if close:
if content is None: lst.append(' />')
else: lst.extend(['>', content, '</', tag, '>'])
else:
lst.append('>')
return mark_safe(''.join(lst))
Run Code Online (Sandbox Code Playgroud)
哪个工作得很好,但后来我读了这篇关于高效字符串连接的文章(我知道这对此并不重要,但我想要一致性)并决定更新我的脚本:
def html_tag(tag, body=None, close=True, attrs={}):
s = StringIO()
s.write('<%s'%tag)
for key, val in attrs.iteritems():
s.write(' %s="%s"' % (key, escape_html(val)))
if close:
if body is None: s.write(' />')
else: s.write('>%s</%s>' % (body, tag))
else:
s.write('>')
return mark_safe(s.getvalue())
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试从模板中渲染时,我的HTML会被转义.其他一切都完全一样.如果我用最后一行替换它,它可以正常工作return …
这可能更像是一个讨论问题,但我认为stackoverflow可能是一个正确的问题.我正在研究指令流水线的概念.我被告知,一旦管道级数增加,管道的指令吞吐量就会增加,但在某些情况下,吞吐量可能不会改变.在什么条件下,这会发生吗?我认为停滞和分支可能是问题的答案,但我想知道我是否遗漏了一些至关重要的东西.
python ×3
.net ×1
assembly ×1
automata ×1
c ×1
c# ×1
c++ ×1
cardinality ×1
dictionary ×1
django ×1
hash ×1
history ×1
indexing ×1
intel ×1
jquery ×1
list ×1
macros ×1
md5 ×1
mysql ×1
null ×1
onload-event ×1
performance ×1
pipelining ×1
polymorphism ×1
proof ×1
sorting ×1
theory ×1