标签: c

函数指针:物理或虚拟地址

当我们得到一个函数的地址或任何对象时,它是该对象的虚拟地址或物理地址?

c

13
推荐指数
2
解决办法
4122
查看次数

如何在C中取消引用NULL指针不会导致程序崩溃?

我需要一位真正的C大师的帮助来分析我的代码中的崩溃.不是为了解决崩溃; 我可以很容易地解决它,但在这之前我想了解这种崩溃是如何可能的,因为这对我来说似乎完全不可能.

此崩溃只发生在客户机器上,我无法在本地重现(因此我无法使用调试器逐步执行代码),因为我无法获取此用户数据库的副本.我的公司也不允许我只更改代码中的几行并为该客户进行自定义构建(因此我无法添加一些printf行并让他再次运行代码)当然客户的构建没有调试符号.换句话说,我的补偿能力非常有限.尽管如此,我可以确定崩溃并获得一些调试信息.但是,当我查看该信息然后在代码中,我无法理解程序流程如何能够到达相关行.代码应该在到达该行之前很久就已经崩溃了.我完全迷失在这里.

让我们从相关代码开始.这是非常少的代码:

// ... code above skipped, not relevant ...

if (data == NULL) return -1;

information = parseData(data);

if (information == NULL) return -1;

/* Check if name has been correctly \0 terminated */
if (information->kind.name->data[information->kind.name->length] != '\0') {
    freeParsedData(information);
    return -1;
}

/* Copy the name */
realLength = information->kind.name->length + 1;
*result = malloc(realLength);
if (*result == NULL) {
    freeParsedData(information);
    return -1;
}
strlcpy(*result, (char *)information->kind.name->data, realLength);

// ... code below skipped, not relevant ... …
Run Code Online (Sandbox Code Playgroud)

c unix crash powerpc

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

可以使用静态链接库来构建共享库吗?

我可以使用带有静态链接的gcc构建可执行文件:

gcc -static xxx.c -o xxx

所以我可以在没有任何外部依赖库的情况下运行xxx.

但是,如果我想构建没有外部依赖库的共享库呢?我的意思是我希望共享库静态链接其外部引用.

c linux compiler-construction gcc

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

为什么C标准不支持嵌套函数?

在装配中实现它似乎不太难.

gcc还有一个标志(-fnested-functions)来启用它们.

c standards function

13
推荐指数
3
解决办法
8228
查看次数

有没有人有在MATLAB中创建共享库的经验?

一位研究人员在MATLAB中创建了一个小型模拟,我们希望让其他人可以访问它.我的计划是进行模拟,清理一些东西并将其转换为一组函数.然后我打算将它编译成C库并使用SWIG创建一个Python包装器.那时我应该可以从一个小的Django应用程序调用模拟.至少我希望如此.

我有正确的计划吗?有没有其他人做过类似的事情?如果有任何我目前不知道的严重陷阱,你能告诉我吗?

c python matlab

12
推荐指数
2
解决办法
1955
查看次数

MFC资源/链接

我将在几年后重新进入MFC世界寻找新工作.人们建议刷新内存的资源是什么?我最近主要做C#.

还有人推荐的任何以MFC为中心的网站或博客?

c c++ mfc

12
推荐指数
2
解决办法
2515
查看次数

如何将字节数组移位12位

我想将字节数组的内容向左移12位.

例如,从这个类型的数组开始uint8_t shift[10]:

{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xBC}
Run Code Online (Sandbox Code Playgroud)

我想将它向左移12位,结果是:

{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAB, 0xC0, 0x00}
Run Code Online (Sandbox Code Playgroud)

c arrays bit-shift bitset

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

轮廓引导优化(C)

谁知道这个编译器功能?GCC似乎支持这一点.它是如何工作的?潜在收益是多少?在哪种情况下它很好?内环?

(这个问题是具体的,不是关于一般的优化,谢谢)

c c++ optimization gcc pgo

12
推荐指数
2
解决办法
4606
查看次数

什么是帮助浏览/遵循C代码的好工具?

我有时需要修改OSS代码或其他人的代码(通常是基于C的,但有时候是C++/Java)并找到自己的"grep"类型,函数声明等标题,因为我遵循代码流并尝试理解系统.是否有一个很好的工具可以帮助代码浏览.我希望能够点击一个类型并被带到声明或点击一个函数名称并被带到它的实现.我在Linux机器上,所以像"只使用Visual Studio"这样的回复不一定适合我.谢谢!

c browser code-search-engine

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

为什么C/C++程序经常在调试模式下关闭优化?

在大多数C或C++环境中,存在"调试"模式和"释放"模式编译.
看看两者之间的区别,您会发现调试模式添加了调试符号(通常是许多编译器上的-g选项),但它也会禁用大多数优化.
在"发布"模式下,您通常会启用各种优化.
为什么不同?

c c++ compiler-construction

12
推荐指数
2
解决办法
3225
查看次数