在C和C++中编写线程安全的UNIX代码有哪些指导原则?
我只知道几个:
其他人在那里?
我今天正在学习C++中的静态类函数,我无法真正理解它们有什么用处?有没有人有一些很好的例子可以成功应用?
谢谢,Boda Cydo.
我今天invalidation
在C++容器的上下文中学到了这个术语.任何人都可以解释它的含义吗?
在循环容器时,似乎不允许以某种方式修改容器的元素.但到底是什么方式?
请帮我理解这个话题.
谢谢,Boda Cydo.
假设我有一个Boda班:
class Boda {
...
};
Run Code Online (Sandbox Code Playgroud)
我cydo
在这个类中有一个成员,我想成为一个智能指针(也就是说,我希望它在类被破坏后自动释放).
我正在使用Boost的智能指针,所以我写道:
class Boda {
boost::shared_ptr<int> cydo;
public:
Boda () {
cydo = boost::shared_ptr<int>(new int(5));
}
};
Run Code Online (Sandbox Code Playgroud)
这是将智能指针作为类成员的正确用法吗?
谢谢,Boda Cydo.
可能重复:
PHP 5.3更新日志?
我是PHP的新手,我很困惑我应该使用哪个PHP版本:5.3.3(最新的5.3.x)或5.2.14(最新的5.2.x).他们之间有什么区别?
我正在使用SAPI5 API来处理文本到语音.如果我简化我的代码看起来像这样(我删除了错误检查,以尽可能简化它):
int main() {
CoInitialize(NULL);
CComPtr<ISpVoice> spVoice;
spVoice.CoCreateInstance(CLSID_SpVoice);
...
CoUninitialize();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
出于某种奇怪的原因,如果我不调用spVoice.Release(),我的代码会崩溃.所以上面的代码崩溃了,但是这段代码很好用:
int main() {
CoInitialize(NULL);
CComPtr<ISpVoice> spVoice;
spVoice.CoCreateInstance(CLSID_SpVoice);
...
spVoice.Release();
CoUninitialize();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
CComPtr
它超出范围时不会自动释放底层对象吗?
我查看了CComPtr
它的实现,它确实调用Release
了析构函数本身.
所以我想知道可能出现什么问题,为什么如果我打电话给Release
自己,我的代码不会崩溃.但如果我不打电话,Release
它会崩溃.
使用EnumWindows
(或FindChildWindows
)Win32 API 时如何避免使用全局变量?
我大概有以下代码:
HWND prog_hwnd;
BOOL CALLBACK ProgEnumProc(HWND hwnd, LPARAM lParam) {
if (...) {
// found the right hwnd, assign it to prog_hwnd;
prog_hwnd = hwnd;
return FALSE;
}
return TRUE;
}
void FindProgHwnd()
{
EnumWindows(ProgEnumProc, 0);
}
int main()
{
FindProgHwnd();
if (prog_hwnd) {
// found prog_hwnd, but it's global variable
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,为了找到合适的hwnd,我将使用全局变量prog_hwnd
.我想避免使用全局变量.有办法吗?
我刚刚安装了scipy(通过easy_install scipy
),但由于某种原因scipy.misc
缺失了.
看看这个:
>>> import scipy
>>> scipy
<module 'scipy' from '/home/boda/python-2.7.1/lib/python2.7/site-packages/scipy-0.11.0-py2.7-linux-i686.egg/scipy/__init__.pyc'>
>>> scipy.misc
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'misc'
Run Code Online (Sandbox Code Playgroud)
有谁知道会发生什么?有7个谷歌搜索scipy.misc
失败的结果.我似乎是第一个发生这种情况的人.
让我们说我有一个vector<int> vals
.我正在迭代它并将值更改为绝对值:
for (vector<int>::iterator it = vals.begin(); it != vals.end(); ++it) {
if (*it < 0) *it = -*it;
}
Run Code Online (Sandbox Code Playgroud)
这是允许的吗?我没有改变它的大小vector<int>
所以我不认为它会失效.我觉得我很安全.我想证实这一点.
我在Visual C++ 2008中编写Windows应用程序,我想在其中嵌入Windows附带的计算器(calc.exe).有谁知道这是否可能,如果是的话,你可以给我一些关于如何实现这一目标的提示吗?