小编Ale*_*x B的帖子

在构造对象时是否有任何理由不使用std :: make_shared?

我想不出任何情况

std::shared_ptr<Object> obj(new Object("foo", 1));
Run Code Online (Sandbox Code Playgroud)

会优先考虑

auto obj = std::make_shared<Object>("foo", 1);
Run Code Online (Sandbox Code Playgroud)

后者总是会产生更好的局部性并减少内存碎片.是否有任何情况,您希望(或被迫)使用第一种形式,除了与返回原始指针的代码接口?

c++

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

两个不等式约束的模糊性

截图

我希望底部视图距离图像其上方的标签至少20个.标签是多行的,因此它可以比图像视图更高或更短,具体取决于文本的数量.当我添加两个"距离最近邻居> = 20"的约束时,如屏幕截图所示,Xcode告诉我约束是模棱两可的.

我如何解决它?

ios autolayout

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

"volatile"限定符和编译器重新排序

编译器无法消除或重新排序对volatile限定变量的读/写.

但是,存在其他变量的情况又volatile如何呢?

场景1

volatile int a;
volatile int b;

a = 1;
b = 2;
a = 3;
b = 4;
Run Code Online (Sandbox Code Playgroud)

编译器可以重新排序第一次和第二次,第三次和第四次分配吗?

情景2

volatile int a;
int b, c;

b = 1;
a = 1;
c = b;
a = 3;
Run Code Online (Sandbox Code Playgroud)

同样的问题,编译器可以重新排序第一个和第二个,或第三个和第四个任务吗?

c c++ volatile compiler-optimization

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

在Clojure/Compojure中转义/清理用户输入

我正在使用Clojure/Ring/Compojure-0.4/Enlive堆栈来构建Web应用程序.

是否有在该堆叠函数要么带HTML或HTML编码(即,<a>&lt;a&gt;),以防止跨站脚本攻击用户提供的字符串?

xss clojure compojure

14
推荐指数
3
解决办法
5176
查看次数

团体和角色之间有什么区别?

除了组之外,许多身份管理实现还使用角色.他们有什么不同?到目前为止,我还没有找到一个令人信服的用例来分离这两者.我读到的所有解释都是含糊不清的.

你能举出一个很好的例子来说明需要角色小组吗?

terminology

14
推荐指数
2
解决办法
9849
查看次数

常规命名空间内匿名命名空间内符号的链接

在C++中,将函数或变量放在匿名命名空间中会使其内部链接,即与static在文件级别上声明它相同,但却是惯用的C++.

普通命名空间中的匿名命名空间怎么样?它仍然保证内部联系吗?

// foo.cpp

void func1() {
    // external linkage
}

static void func2() {
    // internal linkage
}

namespace {
    void func3() {
        // internal linkage
    }
}

namespace ns1 {
    void func4() {
        // external linkage
    }

    namespace {
        void func3() {
            // still internal linkage?
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ namespaces anonymous linkage

14
推荐指数
3
解决办法
7238
查看次数

POST多个参数

我正在将GET更改为POST.目前我有.jsp?id = a,b,c,d.将此更改为帖子时,我仍然会使用id参数a,b,c,d.这不适合我.我可以将逗号分隔列表提交给post参数吗?

html post jsp http

13
推荐指数
3
解决办法
9万
查看次数

是否应从源控制存储库中删除旧/遗留/未使用的代码?

我在多个项目中遇到过这种情况.随着代码库的发展,一些库,应用程序和组件被放弃和/或弃用.

  1. 大多数人都喜欢让他们进入.通常的说法是代码并没有真正占用任何空间,只有在需要之后才可以保留它.
    因此,存储库慢慢变成遗留代码的污水池,很难找到任何东西.
    保持旧代码的另一个理由是新人不会试图实现过去实现的东西,但是没有完全成功.

  2. 有些人删除旧代码,因为它会造成混乱,为新人提出更多问题,而且无论如何都可以恢复代码库的任何旧快照.
    但是,如果您不知道在哪里查找,则无法始终找到旧代码,因为我所知道的(通用)VCS都不提供对整个存储库的搜索,包括所有历史修订,以及搜索旧文件的唯一方法是检查已删除文件所在的修订版本.

什么是存储库管理的好方法?

version-control

13
推荐指数
2
解决办法
1710
查看次数

size_t实际上是指针大小

首先,我要澄清,我现在非常熟悉的定义size_tintptr_t,我不希望他们完成的任务的任何重复.

相反,我想知道以下内容.你知道任何平台,除了 x86/DOS(带有难以忍受的内存模型)演员阵容

void* a = ...;
size_t b = (size_t)a;
Run Code Online (Sandbox Code Playgroud)

实际上丢失了比特或字节?

谢谢!

c

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

std :: make_shared,std :: unique_ptr和移动构造函数

以下代码使用clang 3.0/libc ++编译:

#include <memory>

class Foo
{
public:
    Foo()
        : mem_(new int(10))
    {
    }
    std::unique_ptr<int> mem_;
};

int main()
{
    auto foo = std::make_shared<Foo>();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是这个没有(std::string参数添加):

#include <memory>
#include <string>

class Foo
{
public:
    Foo(const std::string& s)
        : mem_(new int(10))
    {
    }
    std::unique_ptr<int> mem_;
};

int main()
{
    auto foo = std::make_shared<Foo>("aaa");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Clang抱怨使用已删除的构造函数.对我来说,这没有任何意义,因为std::make_shared不应该复制Foo实例,唯一会触发调用(删除)复制构造函数的东西std::unique_ptr.

但是,一旦我明确地定义了一个移动构造函数,它就会编译.

#include <memory>
#include <string>

class Foo
{
public:
    Foo(const std::string& s)
        : mem_(new int(10)) …
Run Code Online (Sandbox Code Playgroud)

c++ stl clang c++11

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