strict-aliasing

    0热度

    2回答

    严格的别名让我偏执。有时我用* int指针设置值,并且期望目标内存读取相同的数据,而不管读指针类型是什么。严格的别名不能保证这一点,有时甚至会导致这种情况并非如此。 如果我在循环中读取char [],并且在该char []数组中有一个* int chainging东西,我打破了其他标准C事物之间的别名规则。 我正在制作一个JIT编译器,因为我使用的是x86,所以我确信我不必关心int对齐。直到我们

    1热度

    1回答

    阵列我有这样的功能: static void doSomething(int16_t array[256], int16_t mask, uint8_t skip){ uint16_t storage = array[skip]; uint64_t* array1=(uint64_t*)(array); uint64_t mask1 =0; uint16_t

    4热度

    2回答

    另一个问题的答案是:Strict aliasing rule and 'char *' pointers表示使用char*检查T对象的二进制内容是可以的。但是使用T*覆盖char缓冲区并不好。 现在我有一个函数,它将二进制数据带到char缓冲区。并在阅读时做这样的事情: // unsigned char *pData used to walk through the buffer. uint32

    1热度

    3回答

    我知道int* ptr = (int*)buffer(其中buffer是char*)中断 严格别名规则。 此语法int& ref = (int&)(*buffer)是否也违反规则? I had一些SEGFAULT由于违反了严格的别名规则,而且这种语法已经消除了这种情况。虽然可能还是不正确的,是吗?

    2热度

    2回答

    由于读了很多警告不要使用工会这样的: union rgba { struct { uint8_t r, g, b, a; } components; uint8_t index[4]; uint32_t value; }; ,因为这是不确定的行为,我决定让事情变得简单,像这样: struct rgba { uint8

    1热度

    2回答

    我需要使用readdir_r()来读取多线程程序中目录的内容。由于struct dirent的大小依赖于文件系统,man readdir_r建议 name_max = pathconf(dirpath, _PC_NAME_MAX); if (name_max == -1) /* Limit not defined, or error */ name_max = 255;

    3热度

    2回答

    该问题与this post有关。 一些权威用户声称以下代码打破strict aliasing rules。 #include <boost/static_assert.hpp> template <typename T> struct MyType { private: T data; public: template <typename U>

    0热度

    1回答

    #include "stdio.h" /* array to store data receeived from CAN Bus */ unsigned char a[8] = {0xCD, 0xEF, 0x12, 0x34, 0x50, 0x00, 0x00, 0x00}; typedef struct { unsigned int a:12; unsigned

    3热度

    1回答

    相关的,但是从有些不同,Do any compilers transfer effective type through memcpy/memmove 在C89,memcpy和memmove需要表现得好像源和目标正在使用的字符类型访问,复制的所有位源到目的地而不考虑被复制的数据的类型。 C99更改了语义,因此如果将具有有效类型的对象复制到没有声明类型的存储器(通常是从malloc或其他此类函数接收

    7热度

    1回答

    我已经看过以下相关的问题,并且它们都不能解决我的确切问题:one,two,three。 我写其中的元件(键 - 值对)与一些记录信息一起存储的集合: struct Element { Key key; Value value; int flags; }; std::vector<Element> elements; (为简单起见,假定两个Key和Value是