小编sha*_*kin的帖子

C# - 超出范围时是否会立即销毁对象?

我是否可以相信一个对象被销毁,并且当它超出C#中的范围时会立即调用它的析构函数?

我认为它应该是因为许多常见的编码实践(例如事务对象)都依赖于这种行为,但我并不习惯使用垃圾收集,并且对这些语言通常的行为方式几乎没有任何了解.

谢谢.

c# garbage-collection raii

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

适用于HTC Desire的正确Eclipse/Android设备配置

我想在Eclipse Galileo中创建一个与HTC Desire匹配的Android虚拟设备.我应该使用哪些配置选项?

使用ADT r10.

android android-emulator

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

当你不想#include时替代前向声明

我通常几乎不再思考,使用前向声明,这样我就不必包含标题.这个例子的东西:

//-----------------------
// foo.h
//-----------------------
class foo
{
   foo();
   ~foo();
};


//-----------------------
// bar.h
//-----------------------

class foo; // forward declaration

class bar
{
   bar();
   ~bar();

   foo* foo_pointer;
};
Run Code Online (Sandbox Code Playgroud)

一些开发人员喜欢使用此方法来避免包含圈子的问题.我宁愿用它来减少广泛的包含层次结构的开销,这是物理设计的一个重要部分(特别是对于大型项目).

但是,在某些情况下,我真的想将成员声明为普通对象而不是指针,以便从自动构建/销毁机制中受益.这导致了前向声明不能再使用的问题,因为在这种情况下编译器需要类定义,例如:

//-----------------------
// foo.h
//-----------------------
class foo
{
   foo();
   ~foo();
};


//-----------------------
// bar.h
//-----------------------

class foo;       // Not enough given the way we declare "foo_object"..
#include "foo.h" // ..instead this is required

class bar
{
   bar();
   ~bar();

   foo foo_object;
};
Run Code Online (Sandbox Code Playgroud)

所以,如果有人知道可以在这里使用的替代语言构造,我会很高兴我可以声明"foo_object",如示例中所示,但不包括其标题.

问候

/罗伯特·

c++ physical-design forward-declaration

10
推荐指数
3
解决办法
3305
查看次数

为什么C++需要语言修改才能"管理"?

为什么不能在编译器编写的管理需要进行什么管理中的C++代码(即,使其"CLR兼容")?

也许有一些妥协,比如在某些情况下禁止无效指针等等.但所有这些额外的关键词等等.这些新增内容必须解决的问题是什么?

我对某些方面以及可能难以解决的问题有所了解,但我们将非常感谢一个很好的解释!

.net c++ clr c++-cli managed-code

9
推荐指数
1
解决办法
1589
查看次数

程序在内存中的外观如何?

程序(例如C或C++)如何安排在计算机内存中?我对段,变量等有点了解,但基本上我对整个结构没有扎实的了解.

由于内存中的结构可能不同,我们假设Windows上有一个C++控制台应用程序.

一些指向我具体的指示:

  • 功能概要,如何调用?
  • 每个函数都有一个堆栈框架,它包含什么以及它如何安排在内存中?
  • 函数参数和返回值
  • 全局变量和局部变量?
  • const静态变量?
  • 线程本地存储..

类似教程的材料的链接是受欢迎的,但请不要参考样式材料,假设汇编程序等知识.

memory winapi program-structure

9
推荐指数
1
解决办法
2193
查看次数

为什么从一开始就没有"管理"代码?

请注意,这不是微软为了传播托管代码的概念而进入大气层的.NET CLR.大多数人都知道托管代码已存在很长时间,并且与火箭科学无关.

我想知道的是为什么计算机发展中运行时安全的概念来得太晚了.

我知道这就像问"为什么第一辆T型福特不带安全气囊和安全带?".尽管如此,这个问题的相关性仍然存在,因为保护已知的危险在人性中是很好的.例如,第一辆T-Ford的速度不够快,无法激发安全气囊的研究.它的速度不够快,人们常常做出致命的判断错误,以至于它会激励安全带成为许多国家的法律和标准.

在计算机进化中,它几乎是另一种方式.我们开始使用汇编程序,相当于以200英里每小时的速度驾驶T-Ford.我有幸与这个时代的几个老卡车司机交谈,听到这些关于手工组装汇编代码,人工调试器,格栅代码等的故事.如果我们在C中犯了一个非常讨厌的错误,我们可能会结束蓝屏.几十年前,你最终可能会损坏硬件而上帝知道什么.但这对我来说是一个谜 - 几十年来,我们所做的一切都是为了减少痛苦,因为蓝屏(很抱歉使用MS作为任何东西的原型).

保护免受已知危险的不仅仅是在人性中,在任何程序员的本性中,自动化和系统化常见设施也是如此,例如错误检查,内存诊断,日志框架,备份维护等.

为什么程序员/人类没有开始自动完成确保他们提供给系统的代码不会损害系统的任务?是的,当然,表现.但是,嘿,这是在任何严重渗透的硬件标准之前.为什么主板没有设计总线架构和额外的处理器来促进"托管代码"?

模特T福特是否有任何比喻不足以让我失踪?

history managed-code

8
推荐指数
5
解决办法
1069
查看次数

是否有任何理由使用SGML而不是XML?

据我所知,XML是SGML的一个子集,旨在简化它并鼓励更广泛的使用.

我猜大多数有用的功能都被引入到XML中,但SGML中是否有任何功能足以激励使用它而不是XML(并接受复杂性的开销)?

xml comparison sgml

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

如何在Windows XP中枚举/列出所有已安装的应用程序?

当我说"已安装的应用程序"时,我基本上是指在[控制面板] - > [添加/删除程序]中可见的任何应用程序.

我更喜欢用Python做,但C或C++也没关系.

c++ python winapi enumeration

7
推荐指数
5
解决办法
3万
查看次数

课程和结构后的分号

可能重复:
为什么我必须在C++的类声明结尾处加一个分号?

发现重复,请投票结束.

为什么类和结构必须用C++中的分号结束?

如下面的代码所示:

class myClass
{



};

struct muStruct
{

};
Run Code Online (Sandbox Code Playgroud)

Java或C#中不需要此语法.为什么C++解析器需要它?

c++ syntax language-design

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

Doxygen copydoc标签重用代码示例

我想使用\ copydoc标记重用一个示例代码块.

解释问题.假设我有两个记录的函数:

/** Aquires resource. */
Resource* AquireResource( int id );

/** Releases resource.*/
void ReleaseResource( Resource* res );
Run Code Online (Sandbox Code Playgroud)

在许多情况下,我想在一个小代码示例中介绍如何在上下文中使用该函数,这通常涉及使用一系列函数,这些函数可能由相同的代码示例充分描述,例如:

/** Aquires resource.
 *
 * \par Example:
 * \code
 * Resource* res = AquireResource( 42 );
 * ReleaseResource( res );
 * \endcode
 */
Resource* AquireResource( int id );

/** Releases resource.
 *
 * \par Example:
 * \code
 * Resource* res = AquireResource( 42 );
 * ReleaseResource( res );
 * \endcode
 */
void ReleaseResource( Resource* res );
Run Code Online (Sandbox Code Playgroud)

所以代码示例是重复的,不好.我想使用copydoc,类似这样:

/** \page …
Run Code Online (Sandbox Code Playgroud)

doxygen reusability

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