小编Sti*_*sis的帖子

尝试更好地理解C++大括号初始化语法

为什么下面的代码是非法的?

for (int index=0; index<3; index++)
{
    cout << {123, 456, 789}[index];
}
Run Code Online (Sandbox Code Playgroud)

虽然这很好:

for (int value : {123, 456, 789})
{
    cout << value;
}
Run Code Online (Sandbox Code Playgroud)

IDEOne中的代码:http://ideone.com/tElw1w

c++ initializer-list list-initialization

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

指针到成员变量的正确"使用"语法

  struct MyStruct {
    typedef int MyStruct::*Ptr;  // my pointer-to-member type
    int foo, bar;
  };
Run Code Online (Sandbox Code Playgroud)

这段代码有效,但我想用现代风格更新它,并typedef用a 代替using.什么是正确的语法使用?我尝试了很多选择而且我被卡住了; 我能找到的唯一例子是指向成员函数,这是不同的.

c++ pointer-to-member

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

启动URL - 跨平台(C++)

我不确定这是否可行,但我试图在C++的用户默认浏览器中打开一个URL.我只想使用'ShellExecute',但我试图让它跨平台.任何人都知道这是可能的,如果是的话?

通过跨平台我的意思是3:

  • Linux的
  • 视窗
  • 苹果电脑

我确实谷歌搜索了太久了,一无所获.谢谢你的帮助 :)

c++ url qt

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

双重免费或内存损坏

我有这样的代码

char *verboseBuf = NULL;
if(somethin){
    for(a loop){
        for(another loop){
            if(somethin else){
                if(curl execution){
                    if(fail){
                        verboseBuf = (char *) malloc(sizeof(char) * (currSize +1));
                        fread(verboseBuf, 1, currSize, verboseFd);
                        verboseBuf[currSize + 1] = '\0';
                        string verbose = verboseBuf;
                        free(verboseBuf);
                    }   
                }   
            }   
        }   
    }   
}
Run Code Online (Sandbox Code Playgroud)

我使用verboseBuf的唯一地方是在最终的if循环中.但我明白了

*** glibc detected *** ./test: double free or corruption (!prev): 0x13c13290 ***
Run Code Online (Sandbox Code Playgroud)

但是,如果我只在一个地方使用它,怎么可以释放它两次呢?每次我使用它,我都会释放它.我尝试使用addr2line来找到之前被释放的地方,但所有得到的都是??:0.

c++ free

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

如何在没有额外记忆的情况下翻转句子

我最近在接受采访时被问到这个问题.

最初,我被要求在不使用内置的String api方法(如split等)的情况下撤销句子.

我/我:我喜欢上帝O/p:像我这样的神

我用堆栈做了这个.他的下一个问题是在不使用额外内存的情况下实现此目

我们如何在java中实现这一目标?

谢谢!

algorithm

-4
推荐指数
1
解决办法
1611
查看次数