问题列表 - 第18001页

如何将new []与删除配对可能只会导致内存泄漏?

首先,根据C++标准,使用delete分配的任何内容new[]都是未定义的行为.

在Visual C++ 7中,这种配对可能导致两种后果之一.

如果类型new []'ed有简单的构造函数和析构函数VC++只是使用new而不是new[]和使用delete该块工作正常 - new只调用"分配内存",delete只调用"空闲内存".

如果new []'ed类型有一个非平凡的构造函数或析构函数,则无法完成上述技巧 - VC++ 7必须调用恰当数量的析构函数.因此它预先在数组中size_t存储元素的数量.现在,地址返回的地址new[]到第一个元素,而不是块的开头.因此,如果delete使用它只调用第一个元素的析构函数和调用"空闲内存",其地址不同于"分配内存"返回的地址,这导致HeapFree()内部的一些错误指示我怀疑是指堆腐败.

然而,每个人都可以阅读使用deleteafter new[]导致内存泄漏的错误陈述.我怀疑任何大小的堆损坏都比仅为第一个元素调用析构函数并且可能没有调用的析构函数没有释放堆分配的子对象这一事实重要得多.

如何使用delete之后new[]可能只会导致某些C++实现中的内存泄漏?

c++ memory-management undefined-behavior

26
推荐指数
3
解决办法
6796
查看次数

使用libxml获取节点的所有属性的列表

我很难找到一种方法来提取节点的所有属性的列表,而不知道它们被称为什么.

我使用以下方法提取单个已知属性:

xmlGetProp(cur, (const xmlChar*)"nodename")

但是如何使用libxml2获取所有属性的列表?

问候,marius

c xml libxml2

5
推荐指数
1
解决办法
6821
查看次数

有没有可靠的替代iText用于Java中的程序化PDF生成?

任何人都会遇到质量/功能相似或相近的任何其他内容?

干杯.

java pdf pdf-generation itext

11
推荐指数
1
解决办法
4629
查看次数

Rails html编码

h在Rails中使用帮助器方法来编码/转义具有撇号(')的字符串在我看来我正在使用它像这样

<%=h "Mike's computer" %>
Run Code Online (Sandbox Code Playgroud)

我的理解是,查看源代码时的html应该是Mike%27s计算机,但生成的html中有一个撇号,Mike的计算机

我错过了一些明显的东西吗

如何获得Mike%27s计算机的预期结果?

总是感谢帮助.

html encoding ruby-on-rails

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

UIAlertView消息

尝试在UIAlertView显示的消息中包含实例变量.

lostAlert = [[UIAlertView alloc] initWithTitle:@"Sorry" message:(@"You Were Wrong, the correct structure was %@", structureName)  delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
Run Code Online (Sandbox Code Playgroud)

但是,显示警报时,不会显示任何消息.

任何想法和帮助将不胜感激:)

山姆

iphone nsstring uialertview

0
推荐指数
1
解决办法
1859
查看次数

为什么在这个prog中使用指针指针?

以下程序显示了如何在C程序中构建二叉树.它使用动态内存分配,指针和递归.二叉树是一种非常有用的数据结构,因为它允许在排序列表中进行有效的插入,搜索和删除.因为这样的树本质上是递归定义的结构,递归编程是处理它的自然而有效的方式.

tree
   empty
   node left-branch right-branch

left-branch
   tree

right-branch
   tree
Run Code Online (Sandbox Code Playgroud)

这是代码:

#include <stdlib.h>
#include <stdio.h>

struct tree_el {
   int val;
   struct tree_el * right, * left;
};

typedef struct tree_el node;

void insert(node ** tree, node * item) {
   if(!(*tree)) {
      *tree = item;
      return;
   }
   if(item->val<(*tree)->val)
      insert(&(*tree)->left, item);
   else if(item->val>(*tree)->val)
      insert(&(*tree)->right, item);
}

void printout(node * tree) {
   if(tree->left) printout(tree->left);
   printf("%d\n",tree->val);
   if(tree->right) printout(tree->right);
}

void main() {
   node * curr, * root;
   int i;

   root = NULL;

   for(i=1;i<=10;i++) { …
Run Code Online (Sandbox Code Playgroud)

c tree pointers

-1
推荐指数
1
解决办法
1002
查看次数

Dictionary.ContainsKey/Value与检查某个键/值的foreach循环之间的速度是否存在差异

检查某个键/值Dictionary.ContainsKey/Valueforeach循环和循环之间是否存在差异?

c# optimization

4
推荐指数
1
解决办法
2189
查看次数

如何向 JTextField 添加向上、向左、向右箭头的侦听器?

我需要为我的 JTextField 编写一个箭头侦听器。如果尝试:

public void keyTyped(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_DOWN) {
                ......
            }
}
...
Run Code Online (Sandbox Code Playgroud)

这不好。(我认为 JTextField 没有响应特殊的键侦听器。)

java

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

有没有办法在C#中继续异常?

当程序中发生意外异常时(在调试器中).有时你只想跳过它,因为在那个时候杀死程序比继续更有害.或者你只是想继续,因为你对另一个错误/错误更感兴趣

是否有选项/ compilerflag/secretswitch来启用它?

我理解异常应该马上解决,但是有些情况(比如我所描述),其中只是想暂时跳过它

.net c# continue exception

4
推荐指数
1
解决办法
7562
查看次数

Tcp连接挂起CLOSE_WAIT状态

客户端首先关闭套接字,当服务器没有太多数据时,tcp连接关闭就好了:

FIN -->
   <-- ACK
   <-- FIN, ACK
ACK -->
Run Code Online (Sandbox Code Playgroud)

当服务器忙于发送数据时:

FIN -->
    <-- ACK,PSH
RST -->
Run Code Online (Sandbox Code Playgroud)

并且服务器连接进入CLOSE_WAIT状态并在那里挂了很长时间.

这有什么问题?客户相关或服务器相关?这种情况发生在Redhat5上,用于本地套接字.

文章说说为什么"RST"是送的,但我不知道为什么停留在CLOSE_WAIT服务器的连接,不发送一个FIN出来.

[编辑]我忽略了最重要的信息,这发生在qemu的slirp网络仿真上.这似乎是处理密切连接的slirp bug的问题.

linux network-programming tcp qemu network-protocols

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