小编Dan*_*can的帖子

为什么这段代码不会导致内存泄漏?

我使用valgrindwith 检查了C++中的以下代码--leak-check=full,它说没有内存泄漏.这是为什么?

char *p = new char[256];
delete p;
Run Code Online (Sandbox Code Playgroud)

new[]delete[]据我所知应该匹配.

c++ valgrind memory-leaks

29
推荐指数
4
解决办法
1808
查看次数

将isnan移植到c ++ 11

当我将编译器版本从gcc 4.6切换到gcc 4.8时,我得到以下错误错误:调用重载'isnan(double)'是不明确的.

这是因为在c ++ 11中有不同的函数声明:C:int isnan(double)C++ 11:bool isnan(double)

来自cpluplus:

  • 在C中,这是作为返回int值的宏实现的.x的类型应为float,double或long double.
  • 在C++中,它使用每个浮点类型的函数重载来实现,每个浮点类型返回一个bool值.

我怎样才能解决这个问题?

c++ c++11

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

如何在Linux上的QtCreator中设置crlf结尾

我想将QtCreator设置为在unix中使用CRLF而不是LF.有没有办法做到这一点?

PS:我知道我可以在文件上使用dos2unix但是我不想这样做.

qt newline qt-creator

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

C OpenMP并行quickSort

在C++中使用openMP时我再次陷入困境.这次我正在尝试实现并行快速排序.

码:

#include <iostream>
#include <vector>
#include <stack>
#include <utility>
#include <omp.h>
#include <stdio.h>

#define SWITCH_LIMIT 1000

using namespace std;

template <typename T>
void insertionSort(std::vector<T> &v, int q, int r)
{
    int key, i;
    for(int j = q + 1; j <= r; ++j)
    {
        key = v[j];
        i = j - 1;
        while( i >= q && v[i] > key )
        {
            v[i+1] = v[i];
            --i;
        }
        v[i+1] = key;
    }
}

stack<pair<int,int> > s;

template <typename T>
void …
Run Code Online (Sandbox Code Playgroud)

c c++ quicksort openmp

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

opengrok的替代品

我正在使用OpenGrok的替代品.我无法正确配置它.我想要的是浏览代码,就像我在Visual Studio中一样.我想要一个菜单​​,其中包含Go To Definition的最小选项,查找参考文献等.如何实现?

opengrok

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

C OpenMP并行冒泡排序

我在C中使用OpenMP 实现了并行冒泡排序算法(Odd-Even转置排序).然而,在我测试之后,它比串行版本慢了(大约10%),尽管我有一个4核处理器(2个真正的x 2,因为英特尔超线程).我已经检查了核心是否实际使用,我可以在运行程序时以100%的比例看到它们.因此我认为我在实现算法时犯了一个错误.

我使用linux与内核2.6.38-8-generic.

这是我编译的方式:

gcc -o bubble-sort bubble-sort.c -Wall -fopenmp 要么

gcc -o bubble-sort bubble-sort.c -Wall -fopenmp 对于串行版本

这就是我的运行方式:

./bubble-sort < in_10000 > out_10000

#include <omp.h>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main()
{
        int i, n, tmp, *x, changes;
        int chunk;
        scanf("%d ", &n);
        chunk = n / 4;
        x = (int*) malloc(n * sizeof(int));
        for(i = 0; i < n; ++i)
            scanf("%d ", &x[i]);
    changes = 1;
    int nr = 0;
    while(changes)
    {
    #pragma …
Run Code Online (Sandbox Code Playgroud)

c openmp bubble-sort

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

C++重载>>运算符奇怪的编译错误

#include <iostream>
#include <string>

using namespace std;

class phonebook
{
    string name;
    string prefix;
public:
    phonebook(string &name, string &prefix)
    {
        this->name = name;
        this->prefix = prefix;
    }

    friend istream &operator>>(istream &in, phonebook &book);
};

istream &phonebook::operator>>(istream &in, phonebook &book)
{
    in >> book.name >> book.prefix;
    return in;
}

int main()
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用g ++ 4.6.1编译此代码时:

"main.cpp:20:错误:'std :: istream&phonebook :: operator >>(std :: istream&,phonebook&)'必须只接受一个参数"

PS:这是非常愚蠢的事情......很明显:S.谢谢你.

c++ overloading operator-overloading

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

C链接阶段不会产生警告

我有以下文件:

main.c:

int f(void);  
int main(void)
{
    f();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

FC:

char *f = "linker";
Run Code Online (Sandbox Code Playgroud)

GNUMakefile:

CC = gcc
CFLAGS = -Wall -g

all: main

main: main.o f.o

main.o: main.c
f.o: f.c

clean:
    rm -rf *.o main
Run Code Online (Sandbox Code Playgroud)

运行makefile时,我没有收到编译警告/错误.为什么?

c linux linker gcc

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

进程何时可以在Windows上更改其PID?

有没有办法让进程在Windows上更改其PID?我发现了这个问题[1],但它只针对Linux说明了答案(即"否").Windows怎么样?

[ 1 ] 更改linux中的进程ID

windows process

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