问题列表 - 第17248页

如何使用shared_ptr避免内存泄漏?

请考虑以下代码.

using boost::shared_ptr;
struct B;
struct A{
    ~A() { std::cout << "~A" << std::endl; }
    shared_ptr<B> b;    
};
struct B {
    ~B() { std::cout << "~B" << std::endl; }
    shared_ptr<A> a;
};

int main() {
    shared_ptr<A> a (new A);
    shared_ptr<B> b (new B);
    a->b = b;
    b->a = a;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

没有输出.没有调用desctructor.内存泄漏.我一直认为智能指针有助于避免内存泄漏.

如果我需要在类中进行交叉引用,我该怎么办?

c++ boost memory-leaks smart-pointers shared-ptr

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

在UITableView中延迟UIImageView渲染

好吧,我有一个UITableView自定义UITableViewCell的,每个包含一个UIImageView图像是通过一个异步下载的NSURLConnection.所有非常标准的东西......

问题是,当表格滚动时,新图像会在后台正确下载,但在表格停止移动之前不会出现RENDERED.

即使它正在移动,我如何让表格呈现它的内容?谢谢.

- 更新 -

仔细看后,我发现NSURLConnection委托方法在表停止滚动之前不会触发.不知道为什么.任何帮助都会很棒.

iphone uitableview nsurlconnection uiimageview

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

复制构造函数需要临时对象

以下代码仅在复制构造函数可用时有效.

当我添加print语句(via std::cout)并使复制构造函数可用时,它不会被使用(我假设有这样的编译器技巧,以删除不必要的副本).

但是在输出operator <<plop()下面的函数(我创建一个临时对象)中我都没有看到复制构造函数的需要.当我通过const引用(或者我做错了)传递所有内容时,有人可以解释为什么语言需要它.

#include <iostream>

class N
{
    public:
        N(int)  {}
    private:
        N(N const&);
};

std::ostream& operator<<(std::ostream& str,N const& data)
{
    return str << "N\n";
}

void plop(std::ostream& str,N const& data)
{
    str << "N\n";
}

int main()
{
    std::cout << N(1);     // Needs copy constructor  (line 25)
    plop(std::cout,N(1));  // Needs copy constructor

    N    a(5);
    std::cout << a;
    plop(std::cout,a);
}
Run Code Online (Sandbox Code Playgroud)

编译:

[Alpha:〜/ X] myork%g ++ -v
使用内置规格.
目标:i686-apple-darwin10
配置:/ var/tmp/gcc/gcc-5646~6/src/configure --disable-checking --enable-werror --prefix …

c++ copy-constructor

11
推荐指数
2
解决办法
3372
查看次数

为什么StyleCop SA1305不尊重VS2010(或MSBuild)中允许的前缀列表?

我刚刚将一个项目从2008升级到2010 Beta 2,而StyleCop现在报告SA1305(匈牙利表示法)警告变量名称前缀为'is'.'Is'肯定在允许的前缀列表中.

这是一个已知的问题?还有其他人遇到过这个问题吗?该代码肯定是在2008年没有任何警告的情况下编译的.

更新:事实证明,这可以在Visual Studio中按预期工作,但然后通过MSBuild失败.请参阅下面的答案了解原因.

stylecop visual-studio-2010 visual-studio-2010-beta-2

7
推荐指数
2
解决办法
5825
查看次数

在Java中获取Application Server名称或ip和端口

我们希望识别并显示代理Web服务器后面运行的Java应用程序的服务器和端口.这意味着getServerName()和getServerPort()返回代理的服务器名称及其端口(80).

我们在一个物理盒上运行两个应用服务器实例,因此每个盒子有两个活动端口,即9080,9081 <Application Server Name>:<Application Server Port>.显示我想要的内容.

有任何想法吗?我是一个完整的Java noob,对不起,如果这是一个基本问题.

java websphere web-applications

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

Enterprise Architect通信图中的消息编号

我正在使用Enterprise Architect(sparxsystems)来创建UML 2.0通信图.我希望消息的编号与此示例类似:http://www.sparxsystems.com.au/uml_tool_guide/uml_dictionary/communicationdiagram.html.

如何从2,3开始收到消息等?每当我创建一条新消息时,它都会将其创建为1.x. 我看到如何重新排序消息,但不知道如何开始新的序列.

该示例提到"新的数字段开始于新的处理层",但未提及如何定义新的处理层.

diagram uml enterprise-architect

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

查询驱动视图和实际视图不返回相同的结果

我有一个视图,返回四列数据以推送到外部程序.当我只是查询视图("Select*from schema.view_name")时,我得到了10353行.当我运行创建视图的实际SQL(我实际上复制并粘贴了Oracle存储的内容,减去"创建或替换"语句)时,我得到了238745行.

有什么想法可能会发生吗?

sql plsql view

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

NSMutableArray addObject不起作用

NSMutableArray *categories在我的视图控制器.h文件中声明了一个,并为它声明了一个属性.

在我的.m文件中委托的parser:foundCharacters:方法中NSXMLParser,我有这个代码:

-(void)parser:(NSXMLParser *) parser foundCharacters:(NSString *)string  
{  
    if (elementFound)  
    {  
        element = string;  
        [self.categories addObject:element];  
    }  
}
Run Code Online (Sandbox Code Playgroud)

但是当我[self.categories addObject:element]在调试模式中踩到它后将鼠标悬停在线上时,XCode告诉我大小为0x0,0个对象.我的XML文件中有3个元素,因此数组中应包含3个项目.

我错过了一些非常明显的东西,我无法弄清楚是什么.

objective-c nsmutablearray

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

为什么使用FinalReleaseComObject而不是ReleaseComObject?

我知道基本的区别,因为ReleaseComObject只减少一些计数器并将其FinalReleaseComObject减少到零.

所以我通常听到的是,调用FinalReleaseComObject因为那时你确定COM对象真的被释放了.

但这让我想知道,这个反击有一点对吗?如果你总是打电话,你不打破这种机制吗FinalReleaseComObject?如果在您打电话之前该计数器不是一个,那么ReleaseComObject可能没有理由吗?

什么可能导致它高于一个不应该?

提前致谢.

PS:我的COM体验只包括使用Excel Interop.不确定这个问题是否属于该域的本地问题(即在Office Interop之外,FinalReleaseComObject不经常使用).

更新1

文章丹提及使用会谈ReleaseComObject时,即可大功告成.据我从文章中了解,这是正常的方式.我认为,如果你这样做,它应该工作正常.在对文章的评论中,作者建议有人ReleaseComObject在循环中调用直到它真正发布(该文章来自2006年,所以这与调用类似FinalReleaseComObject).但他也表示这可能是危险的.

如果你真的想让RCW在代码中的某个特定点调用Release(),你可以在循环中调用ReleaseComObject()直到返回值达到零.这应该确保RCW将调用Release().但是,如果您这样做,请注意,当其他托管引用尝试使用该RCW时,它将导致异常."

这让我相信总是打电话确实不是一个好主意FinalReleaseComObject,因为你可以在其他地方引起例外.正如我现在所看到的那样,如果你绝对确定可以,你应该只打电话给你.

不过,我对此事的经验不多.我不知道怎么可以肯定.如果计数器在不应该增加的情况下增加,那么解决这个问题是不是更好?如果是这样,那么我会说FinalReleaseComObject更多的是黑客而不是最佳实践.

.net com interop

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

MySQL错误:没有密钥长度的密钥规范

我有一个主键是一个varchar(255)的表.出现了一些情况,其中255个字符是不够的.我尝试将字段更改为文本,但是我收到以下错误:

BLOB/TEXT column 'message_id' used in key specification without a key length
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

编辑:我还应该指出这个表有一个包含多列的复合主键.

mysql sql mysql-error-1170

335
推荐指数
7
解决办法
34万
查看次数