小编Sho*_*kit的帖子

C阵列实例化 - 堆栈或堆分配?

我保证之前已经问过这个问题,但是我无法通过搜索找到它; 对于任何裁员,提前抱歉.

这是我(可能错误的)理解,只有在编译时知道对象的大小时才分配给堆栈.因此,在初始化数组的情况下,您可以执行其中一个(这应该在堆栈上):

char charArray[50];
Run Code Online (Sandbox Code Playgroud)

由于此数组的大小在编译时是已知的,因此应该没有问题.

另一方面,这(我相信)也是有效的代码:

char anotherCharArray[someVariable + 50];
Run Code Online (Sandbox Code Playgroud)

这也会在堆栈上进行吗?我很确定代码段错误,如果你释放()这个,所以它让我觉得它确实如此,但它对我来说真的没有意义.同样,100%唯一的情况是,当通过malloc分配数据时,你必须使用free()?

在此先感谢您的帮助.

c heap stack memory-management

18
推荐指数
2
解决办法
2万
查看次数

了解Android VSYNC信号的必要性

我正在努力更好地理解Android显示子系统,但是仍然让我感到困惑的一个问题是如何处理VSYNC信号,以及为什么这么多存在于第一位.

Android的核心是使用VSYNC,但它采用了多种VSYNC信号.通过"VSYNC偏移"部分中的https://source.android.com/devices/graphics/implement.html,可以看到三个VSYNC信号的流程图:HW_VSYNC_0,VSYNC和SF-VSYNC.我知道HW_VSYNC用于更新DispSync中的时序,并且应用程序和surfaceflinger使用VSYNC和SF-VSYNC,但为什么这些单独的信​​号是必需的?此外,偏移如何影响这些信号?是否有可用的时序图更好地解释了这一点?

谢谢你尽你所能的帮助.

android vsync surfaceflinger android-4.4-kitkat android-5.0-lollipop

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

IntelliJ-IDEA的Python类型检查器 - 错误的预期类型?

在以下代码中:

from typing import List
def test() -> List[str]:
    ret = ["Hi", "Hi"]
    return ret
Run Code Online (Sandbox Code Playgroud)

我在函数定义行上收到以下警告:

Expected type 'Integral", got 'str' instead
Run Code Online (Sandbox Code Playgroud)

我看不出任何理由为什么IntelliJ-IDEA的python模块会将这个简单的函数解释为返回Integral而不是str的列表.这是一个类型检查错误吗?

python intellij-idea

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

什么是数据结构类型(如列表)的Sphinx文档字符串标准?

Sphinx是否有一个支持的标准来记录参数或返回值类型不是一个简单的单个对象?

例如,在下面,arg1是str,arg2是str的列表,arg3是str或int.如何在Sphinx中指定集合或复合类型?或者这没有共同的标准?

def function(arg1, arg2, arg3):
    """
    :param arg1: Argument 1
    :type arg1: str
    :param arg2: Argument 2
    :type arg2: list[str]
    :param arg3: Argument 3
    :type arg3: str or int
    """
    pass
Run Code Online (Sandbox Code Playgroud)

python python-sphinx

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

Sphinx 不会自动记录装饰的 Celery 任务

我正在尝试运行 Sphinx 来记录以下 Celery 任务,但在生成 Sphinx 文档时得到一个空文档:

@celery.task(name='taskname')
def taskname(data):
    """
    Some documentation

    """
    ...
Run Code Online (Sandbox Code Playgroud)

...而以下内容得到了很好的记录:

def non_decorated_function(data):
    """
    Some documentation

    """
    ...
Run Code Online (Sandbox Code Playgroud)

我知道函数签名被 celery 任务装饰器破坏了,但我认为 conf.py 中的以下内容应该可以解决这个问题:

extensions = [
    'sphinx.ext.autodoc',
    'celery.contrib.sphinx',
]
Run Code Online (Sandbox Code Playgroud)

我的 .rst 文件如下所示:

.. automodule:: tasks
    :members:
    :undoc-members:
    :show-inheritance:
Run Code Online (Sandbox Code Playgroud)

使用自动任务确实有效,但我希望能与自动模块一起使用,因为我将其添加到重要的代码库中:

.. automodule:: tasks
    :members:
    :undoc-members:
    :show-inheritance:
.. autotask:: tasks.taskname
Run Code Online (Sandbox Code Playgroud)

有没有办法修复 celery 任务装饰器以得到 Sphinx 文档的支持?

python celery python-sphinx

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

Qt Creator:未解析的外部符号

我在Qt中遇到错误已经挣扎了一段时间:

mainwindow.obj:-1: error: LNK2019: unresolved external symbol _git_repository_open referenced in function "public: __thiscall MainWindow::MainWindow(class QWidget *)" (??0MainWindow@@QAE@PAVQWidget@@@Z)
Run Code Online (Sandbox Code Playgroud)

这显然是一个链接错误,但我无法弄清楚导致这种情况的原因.这都是在Windows上编译的,我所针对的库是libgit2.

我使用MVSC2010编译libgit2(我也用于我的Qt版本),然后将外部库添加到我的Qt项目中.包含被承认没有问题,但图书馆没有正确链接.由于libgit2是一个C库,我尝试将库包含在extern块中(也没有exern块)无济于事:

extern "C" {
    #include  <git2.h>
}
Run Code Online (Sandbox Code Playgroud)

此外,该功能在lib文件:

dumpbin /EXPORTS git2.lib
...
_git_repository_open@8
...
Run Code Online (Sandbox Code Playgroud)

抛出错误的相关行(第一个单独工作,因为它在git头中定义,但第二行在链接时失败):

git_repository *repo;
git_repository_open(&repo, "/opt/libgit2-test/.git");
Run Code Online (Sandbox Code Playgroud)

相关的qt.pro文件行:

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/libgit2/lib/ -lgit2
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/libgit2/lib/ -lgit2d
else:unix: LIBS += -L$$PWD/libgit2/lib/ -lgit2

INCLUDEPATH += $$PWD/libgit2/include
DEPENDPATH += $$PWD/libgit2/include
Run Code Online (Sandbox Code Playgroud)

c c++ qt

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

需要指针的私有类变量?

我正在组建一个C++类,但我遇到了一个我可以解决的错误,但是我不太明白.

我正在尝试使用以下标头(main.h):

#include <git2.h>

class Test
{    
public:
private:
    git_repository gitRepo;
};
Run Code Online (Sandbox Code Playgroud)

和以下文件(main.cpp):

#include "main.h"

int main(int argc, char *argv[]){
    Test test;
}
Run Code Online (Sandbox Code Playgroud)

但它给了我一个"Test :: gitRepo'使用未定义的结构'git_repository'".结构实际上并没有未定义,因为如果我使用指向结构而不是结构本身的指针...

git_repository * gitRepo;
Run Code Online (Sandbox Code Playgroud)

......编译得很好.

git_repository的类型声明如下:

typedef struct git_repository git_repository;
Run Code Online (Sandbox Code Playgroud)

我grepped整个include树,这是代码中唯一的typedef或struct定义.这是否表明实际的struct定义隐藏在实际的库实现中,但不包含在头文件中?

c++ qt

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