相关疑难解决方法(0)

如何仅使用标准库分配对齐的内存?

我刚刚完成了一项测试,作为求职面试的一部分,一个问题让我感到难过 - 甚至使用谷歌作为参考.我想看看stackoverflow工作人员可以用它做什么:

"memset_16aligned"函数需要传递给它的16byte对齐指针,否则它将崩溃.

a)如何分配1024字节的内存,并将其与16字节边界对齐?
b)执行memset_16aligned后释放内存.

{    
   void *mem;
   void *ptr;

   // answer a) here

   memset_16aligned(ptr, 0, 1024);

   // answer b) here    
}
Run Code Online (Sandbox Code Playgroud)

c memory-management

404
推荐指数
9
解决办法
17万
查看次数

如何对齐指针

如何将指针对齐到16字节边界?

我找到了这段代码,不确定它是否正确

char* p= malloc(1024);

if ((((unsigned long) p) % 16) != 0) 
{
     unsigned char *chpoint = (unsigned char *)p;        
     chpoint += 16 - (((unsigned long) p) % 16);
     p = (char *)chpoint;
}
Run Code Online (Sandbox Code Playgroud)

这会有用吗?

谢谢

c++

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

如何将地址舍入到16的倍数

给定一个unsigned char *x,我需要将*x指向下的地址舍入到16的倍数.如下0x7fff5fbff7fc0x7fff5fbff7f0.我试图改变它:

x >> 4;
x << 4;
Run Code Online (Sandbox Code Playgroud)

也试过了

x >>= 4;
x <<= 4;
Run Code Online (Sandbox Code Playgroud)

但考虑到它不是整数,它不允许我这样做.有什么建议?

c

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

如何四舍五入到下一个 32 位对齐?

来自网络的数据包在末尾添加了填充字节以进行对齐。我想跳过这些字节,但数据包大小可变但已知。给定一个 number n,如何将其四舍五入到下一个 4 字节对齐?

c++ alignment

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

标签 统计

c ×2

c++ ×2

alignment ×1

memory-management ×1