问题列表 - 第24600页

使用非虚拟析构函数扩展基类是否危险?

在以下代码中:

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)

c++ polymorphism memory-management

12
推荐指数
2
解决办法
4253
查看次数

使用MD5.Create和MD5CryptoServiceProvider有什么区别?

在.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)

.net c# hash md5

38
推荐指数
3
解决办法
1万
查看次数

使用Python对字符串中的元素进行排序

我需要对字符串进行排序,然后我想出了以下函数.

def mysort(comb_): 
    str = [] 
    size = len(comb_) 
    for c in comb_: 
        str.append(c) 
    str.sort() 
    return ''.join(str) 

有没有办法让它紧凑?

python sorting

8
推荐指数
1
解决办法
1万
查看次数

上下文自由语言问题(抽取引理)

我知道这与编程没有直接关系,但我想知道是否有人知道如何将泵浦引理应用于以下证明:

证明L = {(a ^ n)(b ^ n)(c ^ m):n!= m}不是无上下文语言

我对使用抽吸引理非常有信心,但这个真的让我感到厌烦.你怎么看?

theory language-theory automata proof

8
推荐指数
1
解决办法
2356
查看次数

什么时候NULL宏不是0?

我隐约记得几年前读过这篇文章,但我在网上找不到任何参考.

你能给我一个NULL宏没有扩展到0的例子吗?

编辑清晰:今天,它扩展为((void *)0),(0)(0L).但是,有些架构早已被遗忘,而这种情况并非如此,并且NULL扩展到了不同的地址.就像是

#ifdef UNIVAC
     #define NULL (0xffff)
#endif
Run Code Online (Sandbox Code Playgroud)

我正在寻找这样一台机器的例子.

更新以解决问题:

我不是在现行标准的背景下提出这个问题,也不是用不正确的术语来扰乱人们.但是,我接受的答案证实了我的假设:

后来的模型使用了[blah],显然是对所有现存的写得不好的C代码的反应,这些代码做出了错误的假设.

有关当前标准中的空指针的讨论,请参阅此问题.

c macros null history

33
推荐指数
2
解决办法
1万
查看次数

jQuery resize函数在页面加载时不起作用

如何使此功能不仅可以在窗口大小调整上运行,还可以在初始页面加载时运行?

$(window).resize(function() {
...  
});
Run Code Online (Sandbox Code Playgroud)

jquery onload-event

8
推荐指数
2
解决办法
2万
查看次数

使用python从列表中创建字典

我需要将列表转换为字典,如下所示.奇数元素具有键,偶数元素具有值.

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)

好像在起作用

python dictionary list

27
推荐指数
4
解决办法
8万
查看次数

MySQL索引基数 - 性能与存储效率

假设您有一个包含1亿行的MySQL 5.0 MyISAM表,在两个整数列上有一个索引(主键除外).

从我对B树结构的不太了解,我认为较低的基数意味着索引的存储效率更好,因为父节点较少.而更高的基数意味着存储效率更低,但读取性能更快,因为它必须通过较少的分支导航才能获得所需的任何数据,以缩小查询的行数.

(注意 - "低"对"高",我并不是说例如100万对比99万对于1亿行表.我的意思是更像是9000万对比9500万)

我的理解是否正确?

相关问题 - 基数如何影响写入性能?

mysql indexing performance cardinality

20
推荐指数
1
解决办法
1万
查看次数

Django:奇怪的mark_safe行为?

我写了这个小函数来写出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 …

python django

3
推荐指数
1
解决办法
2637
查看次数

为什么增加管道深度并不总是意味着增加吞吐量?

这可能更像是一个讨论问题,但我认为stackoverflow可能是一个正确的问题.我正在研究指令流水线的概念.我被告知,一旦管道级数增加,管道的指令吞吐量就会增加,但在某些情况下,吞吐量可能不会改变.在什么条件下,这会发生吗?我认为停滞和分支可能是问题的答案,但我想知道我是否遗漏了一些至关重要的东西.

assembly intel pipelining

7
推荐指数
1
解决办法
4515
查看次数