我正在尝试调试作业程序中的段错误,我发现我的 GDB 甚至无法再打印 std::strings。我该如何解决?
我在 Ubuntu 18.04 LTS 上。
CLang++ 版本:
$ clang++ --version
clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Run Code Online (Sandbox Code Playgroud)
GDB版本:
$ gdb --version
GNU gdb (Ubuntu 8.1-0ubuntu3.1) 8.1.0.20180409-git
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details. …Run Code Online (Sandbox Code Playgroud) 如果您为 CCD 以非本机方向拍摄 JPEG 图片,大多数相机都不会费心旋转原始图像。他们只是(懒惰地)修改 EXIF 元数据中的 Orientation 值并让图像查看器处理它。您可以通过安装 ExifTool(通过 APT)并运行exiftool -Orientation -n image.jpg. (这将为您提供在数据中找到的原始数值,对于人类可读的输出,请删除-n.)
是否有 Ubuntu/Linux 工具或方法来修改 JPEG 图像,以便在 EXIF 方向值设置为 1 时将原始图像旋转到正确的方向?
对于一个家庭作业,我试图创建自己的版本std::find,std::begin,std::end,和std::size。
我写了一些看起来像这样的代码:
#include <vector>
template <typename I, typename T>
I find(const I& beg, const I& end, const T& sought)
{/* ... */}
template <typename T, size_t S>
T* begin(T (&a)[S])
{return &a;}
template <typename T, size_t S>
T* end(T (&a)[S])
{return &a + S;}
template <typename T, size_t S>
constexpr size_t size(T (&)[S])
{return S;}
int main()
{
std::vector<int> vec = {0, 1, 2, 3};
// ...
// test not-found case (and …Run Code Online (Sandbox Code Playgroud)