小编Bif*_*fen的帖子

vector clear()似乎没有释放push_back中分配的内存

这是一个简单的程序,我尝试用向量来理解内存分配/自由行为.struct有一个vector<int>as成员.我的理解是clear()对向量的调用将导致向量元素的内存不受影响.但是valgrind标记了内存泄漏.

代码看起来很简单,但是花了很长时间才来到这里.

#include <iostream>
#include <vector>

using namespace std;

struct a {
    vector<int> v;
};

int main (void) {

    struct a *aptr = (struct a*) calloc(1, sizeof(struct a));

    aptr->v.push_back(10);

    aptr->v.clear();

    free(aptr);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)
==27649== 4 bytes in 1 blocks are definitely lost in loss record 1 of 1
==27649==    at 0x4C2B1C7: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==27649==    by 0x4013A7: __gnu_cxx::new_allocator<int>::allocate(unsigned long, void const*) (new_allocator.h:92)
==27649==    by 0x4011BE: std::_Vector_base<int, std::allocator<int> >::_M_allocate(unsigned long) (in /homes/dineshb/code_tryout/c++/vectors/a.out)
==27649==    by …
Run Code Online (Sandbox Code Playgroud)

c++ memory-management vector

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

返回const int&的类型

const int z1 = 5;
const int & giveMeNumber1(){
    return z1;
}

int z2 = 6;
const int & giveMeNumber2(){
    return z2;
}

int main(){
    int y = giveMeNumber1();
}
Run Code Online (Sandbox Code Playgroud)
  1. 两种函数的返回类型似乎都是const int.我对么?如果是这样,为什么我能分配int y = giveMeNumber1();

  2. 为什么这些函数不返回的实际地址z1z2分别.我写的时候:

    int x = 3; cout << &x << endl;
    
    Run Code Online (Sandbox Code Playgroud)

    x打印变量的地址,因此:

    cout << giveMeNumber1() << endl;
    
    Run Code Online (Sandbox Code Playgroud)

    应该打印地址(const int & return type),但它打印5.

c++

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

错误:'mutex'没有命名类型

当我在ubuntu中使用arm-none-eabi-g ++工具链尝试以下代码时,我遇到了编译错误:

#include <iostream>  
#include  <thread>    // std::thread    
#include  <mutex>    // std::mutex    
mutex mtx;           // mutex for critical section

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

commpile命令:

arm-none-eabi-g++ -Os -Wall -std=c++11 -fno-rtti -fno-exceptions -c mt.cc
Run Code Online (Sandbox Code Playgroud)

编译错误:

mt.cc:5:1:错误:'mutex'没有命名类型mutex mtx; //关键部分的互斥锁

^

gcc版本:

gcc版本4.8.4 20140725(发布)[ARM/embedded-4_8-branch修订版213147](适用于ARM嵌入式处理器的GNU工具)

c++ gcc c++11

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

If 语句根据条件中使用的变量的数据类型而采取不同的行动

#include <bits/stdc++.h>

using namespace std;

int main() {
  int t;
  cin >> t;
  while (t--) {
    int x;
    int y;
    cin >> x >> y;
    if (x % 5 == 0 && x <= y) {
      cout << y - x - 0.50 << "wow"
           << "\n";

    } else {
      cout << y << "\n";
    }
  }
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

输入:

3
30 120.00
42 120.00
300 120.00
Run Code Online (Sandbox Code Playgroud)

输出:(当y为int时)

89.5wow
119.5wow
119.5wow
Run Code Online (Sandbox Code Playgroud)

在这里,即使第二和第三种情况应该给出 false 并运行else ,它也会运行if本身,而且不仅 …

c++ if-statement

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

为数组元素生成随机数

我在使用C++生成二进制随机数时遇到问题.我想创建一个数组,每个元素都包含二进制形式的随机数.我想要将XOR元素放在一起.这是我的代码

void Msg::setXOR(double Code)
{
  int array[30];
  srand ( time(0) );
  for(int j = 0;j<30;j++)
  {
    i = rand();         
    array[j]=i
    double x = array[j]^ array[j+1]^ array[J+2];
    code = x ;
    this -> code_var = code
  }
}
Run Code Online (Sandbox Code Playgroud)

它不起作用,它不会产生二进制随机数.任何人都可以帮助我如何解决它?

c++ arrays binary

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

ValueError:时间数据'2013/05/24 07:00:00'与格式'%Y-%m-%d%H:%M:%S'不匹配

import csv
import datetime as dt
import datetime

import matplotlib.pyplot as plt


x,y = [],[]
csv_reader = csv.reader(open('noneventEventdetect.csv'))
for line in csv_reader:
    x.append(line[1])
    T = dt.datetime.strptime(line[0],'%Y-%m-%d %H:%M:%S')
    #print(T)
    y.append(T)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(y,x) 
fig.autofmt_xdate()



plt.show()
Run Code Online (Sandbox Code Playgroud)

示例CSV数据(python3.4):

24/5/2013 7:00:00 1

24/5/2013 7:00:00 2

24/5/2013 7:00:00 3

24/5/2013 7:00:00 4

24/5/2013 7:00:00 5

24/5/2013 7:00:00 6

这个错误:

Traceback(最近一次调用最后一次):

文件"C:\ Users\Kitravee\Desktop\New folder(4)\ sdf.py",第12行,in

T = dt.datetime.strptime(line[0],'%d-%m-%Y %H:%M:%S')
Run Code Online (Sandbox Code Playgroud)

_strptime_datetime中的文件"C:\ Python34\lib_strptime.py",第500行

tt, fraction = _strptime(data_string, format)
Run Code Online (Sandbox Code Playgroud)

文件"C:\ Python34\lib_strptime.py",第337行,在_strptime中

(data_string, format))
Run Code Online (Sandbox Code Playgroud)

ValueError:时间数据'2013/05/24 07:00:00'与格式'%d-%m-%Y不匹配 …

python python-3.x

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

我们可以在没有原型声明的情况下在 main 之后定义函数吗?

#include<iostream>
using namespace std;

int sum(int ,int);
int sum(int ,int );
int main(){
    cout<<sum(1,3)<<endl;
}
int sum(int a,int b){
    cout<<"hi "<<endl;
    return a+b;
}
int sum(int a,int b,char c){
    return a+b+c;
}
Run Code Online (Sandbox Code Playgroud)

在上面的程序中,我在 main 之后定义了一个没有原型声明的函数,但是编译器没有产生错误信息。

c++ function

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

退出状态205是什么意思?

我尝试在UNIX中执行一个文件.它显示以下错误:

ERROR: Unable to execute 002Sanity: Permission denied 
Failed to exec()
Exit Status: 205
Run Code Online (Sandbox Code Playgroud)

怎么解决这个?

linux bash

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

C++我的字符串没有效果

我是编程的新手,这可能是一个愚蠢的问题,但我不能让这个简单的代码在Eclipse上工作.我正在使用C++.

int main() {


   string fruits[] = {"Apple", "Melon", "Banana". "Orange", "Pineapple"};

   cout << "Fruit I want to eat : " << fruit[3] << endl;


   return 0;
}
Run Code Online (Sandbox Code Playgroud)

我不断得到( Statement has no effect 'string')和其他东西错误,帮助?

c++ string effect

-7
推荐指数
1
解决办法
171
查看次数