我正在尝试使用GDB进行调试(以找到恼人的段错误).当我跑:
gdb ./filename
Run Code Online (Sandbox Code Playgroud)
从命令行,我收到以下错误:
This GDB was configured as "i686-pc-linux-
gnu"..."/path/exec": not in executable
format: File format not recognized
Run Code Online (Sandbox Code Playgroud)
当我执行:
file /path/executable/
Run Code Online (Sandbox Code Playgroud)
我得到以下信息:
ELF 64-bit LSB executable, AMD x86-64,
version 1 (SYSV), for GNU/Linux 2.4.0,
dynamically linked (uses shared libs), not stripped
Run Code Online (Sandbox Code Playgroud)
我正在使用GDB 6.1,可执行文件是使用gcc版本3.4.6编译的.
在使用gdb方面,我有点失水,但据我所知,它应该在这个实例中工作.有什么想法会出错吗?
缩放2D图像阵列的最佳方法是什么?例如,假设我有一个1024 x 2048字节的图像,每个字节都是一个像素.每个像素都是从0到255的灰度级.我希望能够通过任意因子缩放此图像并获得新图像.因此,如果我将图像缩放0.68倍,我应该得到一个大小为0.68*1024 x 0.68*2048的新图像.一些像素将相互折叠.并且,如果我按比例缩放3.15,我会得到一个更大的图像,像素被复制.那么,实现这一目标的最佳方法是什么?
接下来,我希望能够将图像旋转任意角度,范围为0到360度(0 - 2Pi).旋转后裁剪图像不是问题.最好的方法是什么?
使用system()执行二进制文件和使用fork/execvp的组合有什么区别.
是否有任何安全性/可移植性/性能差异.
如何在不丢失编译器内部数据的情况下进行类型转换?
例如:
int i = 10;
UINT k = (UINT) k;
float fl = 10.123;
UINT ufl = (UINT) fl; // data loss here?
char *p = "Stackoverflow Rocks";
unsigned char *up = (unsigned char *) p;
Run Code Online (Sandbox Code Playgroud)
编译器如何处理这种类型转换?显示位的低级示例将受到高度赞赏.
我正在寻找一种轻量级的方法来使我的程序(用C语言编写)能够在Windows或Linux上播放音频文件.我目前正在使用Windows本机调用,这实际上只是一个传递文件名的调用.我想在linux上运行类似的东西.
音频文件是Microsoft PCM,单通道,22Khz
有什么建议?
是否可以关闭特定功能的优化?我的一个朋友有一个问题,gcc优化使一些(我不知道)μ控制器代码不起作用.我们知道它是哪些函数,但是我们对代码本身没有任何线索,所以最简单和最安全的方法可能就是为整个函数关闭它.
遗憾的是http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html显示有一个优化函数属性/ pragma,但它需要gcc 4.4,这是我们没有的.
提前致谢
最近有人在我使用的一段代码中向我指出
char* name = malloc(256*sizeof(char));
// more code
free(name);
Run Code Online (Sandbox Code Playgroud)
我的印象是这种设置阵列的方式与使用相同
char name[256];
Run Code Online (Sandbox Code Playgroud)
并且两种方式都需要使用free().我错了,如果是这样,有人可以用低级别的术语解释有什么区别?
最近,我越来越发现拥有丰富的编程基础知识是件好事.可悲的是,我是(许多)自学成才的PHP开发人员之一,并且没有后悔选择这条道路.
但是,我仍然认为我应该从零开始将我的知识扩展到一些"真正的"编程语言,并从那里积累我的知识.我无意改变自己的职业道路,但我认为从网络开发框中思考是件好事.
我不喜欢上课或课程,因为我根本没有时间参加.所以:
从零级开始,一步一步地教自己C的最佳方法是什么?
由于我的主要目标是学习更多编程基础知识,C甚至是一个不错的选择吗?
如果没有,会是什么语言?
截至目前的摘要:
首先,感谢所有出色的回应.这些将非常有帮助.虽然大多数人似乎都同意从C开始并不是一个糟糕的选择,但我也看到人们说跳过C并使用C++甚至C#可能是个更好的主意,因为这些语言更新.
我的个人意见仍然是从零级开始是好的,即使语言本身不直接有助于我做的事情.我仍然相信它会间接地让我成为一个更好的程序员.但话说回来,就像说的那样,我对这些语言的了解非常有限,所以我很想听听你对此事的看法.
在I/O安全方面,C标准库非常差.许多函数都有缓冲区溢出(gets,scanf),或者如果没有给出正确的参数(scanf),可能会破坏内存,依此类推.每隔一段时间,我就遇到一位有进取心的黑客,他自己编写了一个缺乏这些缺陷的图书馆.
你见过的这些图书馆有哪些最好的?您是否在生产代码中使用过它们,如果是这样,那么它们不仅仅是业余爱好项目?