小编Ios*_*riu的帖子

bzero()&bcopy()与memset()&memcpy()

没有任何理由使用非标bzero()bcopy()替代memset(),并memcpy()在Linux环境?我听说很多人说他们对Linux编译器更好,但是没有看到任何优于标准功能的优势.

它们是否比标准的更优化,或者它们是否具有任何行为特异性?

c linux

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

智能指针运算符=

我已经看到一些智能指针operator=以两种方式实现:

A)将原始指针分配给另一个原始指针的一个:

SmartPointer& operator=(const SmartPointer& rhs)
{
   delete m_ptr;
   m_ptr = rhs.m_ptr;
   return *this;
}
Run Code Online (Sandbox Code Playgroud)

B)在赋值后使右手侧指针无效的一个:

SmartPointer& operator=(SmartPointer& rhs)
{
   delete m_ptr;
   m_ptr = rhs.m_ptr;
   rhs.m_ptr = nullptr
   return *this;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是更多建议使用哪一个?我对B)的问题是,如果有人想进一步操作第二个智能指针(参见下面的代码),程序将崩溃(如果没有检查空指针)或什么都不做.这似乎不太好:)

SmartPointer<MyClass> p1(new MyClass());
SmartPointer<MyClass> p2(new MyClass());
p1 = p2;
p2->someMethod(); // <----- BOOM!
Run Code Online (Sandbox Code Playgroud)

c++ smart-pointers operator-overloading

6
推荐指数
1
解决办法
227
查看次数

来自目标线程的PostThreadMessage

今天,我看到过如下代码:

void Foo()
{
    MyMsgStruct myMsg;

    /* omission for simplicity */

    /* send to update thread */
    PostThreadMessage(myThreadId, myMessage, (WPARAM)myMsg, NULL);
}
Run Code Online (Sandbox Code Playgroud)

Foo()从同一个线程调用时myThreadId,即从应该是目标线程的同一个线程调用时会发生什么?是性能问题还是只是糟糕的编写代码或两者兼而有之?

我相信它可能会影响性能,因为我相信它会将消息排队到线程的队列而不是仅仅做它应该做的事情,因此减慢程序的速度.

线程安全不是我对此问题的关注.

c++ windows multithreading

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

在c编程方面需要帮助

我对以下程序有疑问,我无法理解以下程序的输出:

#include<stdio.h>
#include<conio.h>
main()
{
    char c='1';
    clrscr();
    printf("%d",&c);
    getch();
}
Run Code Online (Sandbox Code Playgroud)

在我的编译器中,它打印"-11",我正在使用Turbo C++.我知道,如果我使用" c"而不是" &c"它将打印49因为它是一个ASCII数字'1'.但它为什么打印 - 11当我使用" &c"时.

c printf

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