小编Tob*_*ght的帖子

使用返回指针正确使用free是什么意思?

我写了一个小示例问题来了解内存分配和释放内存(以防止内存泄漏):

#include <stdlib.h>

long* foo(char str[]) {
    long *nums;
    nums = calloc(2,sizeof(long));

    //something is happening depending on what's inside the char[]

    nums[0] = 57347534;
    nums[1] = 84757;

    return nums;
}

int main() {
    char str1[400] = "This is a test";

    long* retValue = foo(str1);

    //some lines of checking content of "retValue"

    char str2[400] = "This is another test";

    retValue = foo(str2);

    //some more lines of checking content of "retValue"

    char str3[400] = "This is a final test";

    retValue = foo(str3); …
Run Code Online (Sandbox Code Playgroud)

c pointers return-value

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

是否从字符串文字初始化的数组与从单个字符初始化的数组相同?

有两个数组:

char a[] = "Nice you!";     
char b[] = {'N', 'i', 'c', 'e', ' ', 'y', 'o', 'u', '!'};
Run Code Online (Sandbox Code Playgroud)

我认为a[]并且b[]完全一样.所以这是我的代码,看看每个数组的最后一个元素后面是什么:

#include <stdio.h>

int main(void)
{
    char a[] = "Nice you!";
    char b[] = {'N', 'i', 'c', 'e', ' ', 'y', 'o', 'u', '!'};

    char *pa;
    char *pb;
    pa = a;
    pb = b;
    printf("*(pa + 9)= %d\n", *(pa + 9));
    printf("*(pb + 9)= %d\n", *(pb + 9));

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

我的理解是否正确?我不太确定,需要确认.

c arrays string char

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

为什么预定义宏 __STDC_VERSION__ 未定义?

我想知道我当前在 Visual Studio C++ 中使用哪个 C 标准,但我在使用__STDC_VERSION__预定义宏和其他 C99 预定义宏时遇到了问题 - 出现一条错误,表明该标识符未定义,当我使用时,#ifndef __STDC_VERSION__似乎它没有定义。这是否意味着我正在使用 ANSI C?

下面是使用的示例代码__STDC_VERSION__

int main(void) {
   printf("%d\n", __STDC_VERSION__);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

c c99 visual-c++

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

运行时数据类型多态性

我在C++中提出了运行时多态的解决方案.

#include <iostream>
using namespace std;

class base {
    public:
    virtual void call(double xx) {
        cout << "DERIVED: " << xx << endl;
    }
};

template<typename T>
class derivedT : base {
    public:
    virtual void call(double xx) {
        cout << "DERIVED_T: " << ((T) xx) << endl;
    }
};

int main() {
    base* sample = nullptr;

    cout << "CHOOSE TYPE: (BYTE = 1, UINT = 2, DOUBLE = 3)" << endl;
    uint8_t type = cin.get();
    type -= 48;

    switch (type) …
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism inheritance templates c++17

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

如何获取向量的返回引用?

我找到了两种方法来获取函数返回的引用.

vector<int> vec1 = {4,5,6};

vector<int>& rtn_vec(void)
{
    return vec1;
}

int main()
{
    vector<int> &vec2 = rtn_vec(); //way 1
    vector<int> vec3 = rtn_vec(); //way2

    vec2[0] = 3;

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

我理解方式1意味着将引用传递vec1&vec2,所以vec2[0] = 3;更改vec1{3,5,6}.

但是关于方式2,我有两个问题:

  1. 为什么我可以将reference(vector<int>&)传递给实例(vector<int>),它是如何工作的?

  2. 方式2是否涉及深层复制?因为我运行此代码,vector<int> vec3 = rtn_vec();似乎只是复制vec1vec3.

c++ reference return-value

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

cppreference 上的partial_ordering 措辞错误

在 CPP Reference 对std::partial_ordering的描述中,它说:

\n
\n

partial_ordering尝试将 a与整数文字以外的任何内容进行比较的程序的行为\xe2\x80\x8b0\xe2\x80\x8b是未定义的。

\n
\n

但随后它记录了一个比较 的两个实例的相等运算符partial_ordering。在我看来这是一个矛盾。

\n

我理解他们想表达的意思:如果您要与整数进行比较,它必须是文字0,否则它是未定义的行为。但现在的措辞方式看起来像是在比较两个partial_ordering实例相互比较似乎也是未定义的行为。

\n

我是不是误读了什么?“尝试比较”不包含平等比较吗?

\n

c++ c++20

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

子进程中的stdout和stderr重定向

如果我像这样运行Bash脚本:

./script.sh 2>&1
Run Code Online (Sandbox Code Playgroud)

stderr将被重定向到stdout.

如果脚本在内部调用某个工具(例如ls)或生成一个新进程,这些子进程是否stderr也将它们重定向到stdout

unix bash stdout process stderr

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

类型android.support.v7.widget.RecyclerView无法解析.它是从所需的.class文件间接引用的

我正在使用Eclipse ADT开发一个Android应用程序.我正面对

类型android.support.v7.widget.RecyclerView无法解析.

它是从文件顶部所需的.class文件间接引用的,这意味着包com.example.fragments.我添加了支持库E:\software\adt-bundle-windows-x86_64-20140702\adt-bundle-windows-x86_64-20140702\sdk\extras\android\support\v7但没有改进我的项目 - 仍然显示错误.我如何解决它?

eclipse android

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

来自file.csv的cat与grep数据

我有数据file.csv:

(...)
0000046;0000046;04688;29;1;52.1683;20.5567
0000046;0000046;04688;2A;1;52.1818;20.5639
0000046;0000046;04688;3;1;52.1785;20.5629
0000046;0000046;04688;4;1;52.1815;20.5638
0000046;0000046;04688;5;;52.1779;20.5635
0000046;0000046;04688;6;1;52.1813;20.5636
0000046;0000046;04688;7;;52.1777;20.5634
0000046;0000046;04688;8;;52.1810;20.5635
0000046;0000046;04688;9;1;52.1775;20.5631
0000046;0000046;05027;2;;52.1908;20.5660
0000046;0000046;05027;4;1;52.1907;20.5649
0000046;0000046;05527;1;1;52.1824;20.5636
(...)
Run Code Online (Sandbox Code Playgroud)

我需要提取第三个字段与给定值匹配的行.我试过了

cat file.csv |grep 05027
Run Code Online (Sandbox Code Playgroud)

不幸的是,这匹配任何包含05027任何地方的行 如何限制仅匹配第三个字段?

bash awk grep sed cat

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

如何将一个类的构造函数的调用限制为仅其工厂类?

我想防止除类的工厂之外的任何东西构造类类型的对象。我需要该类具有一个公共接口,但我想将其创建仅限于其工厂。我怎么做?

让我们称之为班级Car和工厂CarFactory。这是我在不使用friend所有私有成员并将其暴露给工厂的情况下如何执行此操作的最初想法:

class Car {
private:
  Car();
  Car(Car& ref);

  friend class CarFactory;
};

class CarFactory {
public:
  Car * makeCar();
};
Run Code Online (Sandbox Code Playgroud)

我发现了一个与Java有关的问题:如何使构造函数仅对工厂类可用?

上面的代码按原样工作。澄清一下,我想知道是否有一种方法可以只与工厂共享构造函数,而不能与所有私有成员共享?

c++ factory friend

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