标签: alignment

由于 malloc 的结果似乎不能保证与任何内容对齐,它是否可用?

我最近了解到,取消引用未与某个对象 ( ) 对齐的指针uint32_t* foo = (uint32_t*)7; *foo = 5;实际上是未定义的行为:

C11 第 6.2.8 节:对象对齐:

完整的对象类型具有对齐要求,这对可以分配该类型的对象的地址施加了限制。对齐是实现定义的整数值,表示可以分配给定对象的连续地址之间的字节数。对象类型对该类型的每个对象施加对齐要求:可以使用_Alignas关键字请求更严格的对齐。

好的,非常有趣。但malloc似乎根本不关心对齐:

7.22.3.4malloc函数

概要

#include <stdlib.h>
void *malloc(size_t size);

描述

malloc函数为大小由 size 指定且值不确定的对象分配空间。

退货

malloc函数返回空指针或指向已分配空间的指针。

因此:执行以下操作是否不太可能会引发未定义的行为?

uint32_t* a = malloc(10*sizeof(uint32_t));
*a = 7;
Run Code Online (Sandbox Code Playgroud)

毕竟,我们无法保证 的返回值与malloc任何内容对齐。

c malloc alignment language-lawyer

0
推荐指数
1
解决办法
93
查看次数

对齐图像 - 水平

如果您访问我的网站:www.ryancoughlin.com - 如果您在页面右侧看到Google,Yahoo等RSS按钮.我试图让它们均匀对齐,它们都是相同的图像高度,我一直试图让它们均匀排列.但我没有成功.

css image alignment

-1
推荐指数
1
解决办法
1779
查看次数

JPanel翻出来,FlowLayout没有按预期工作

前几天这段代码正在运行.我改变了一些东西并重新运行它,现在它没有按预期工作.显然我改变的行为改变了行为,但我已经回去并恢复了所有这些改变,但它仍然无效.忽略那一点信息(开始),为什么这段代码不会在JPanel中放置一个15x15的JLabel网格?

gameBoard.setLayout(new FlowLayout());

for (int i = 0; i < 15; i++)
{
    for (int j = 0; j < 15; j++)
    {
        JLabel tile = new JLabel("");                       
     tile.setHorizontalAlignment(SwingConstants.CENTER);
        tile.setPreferredSize(new Dimension(27, 27));
        tile.setBorder(new EtchedBorder());
        tile.setEnabled(false);

        gameBoard.add(tile);
    }
}
Run Code Online (Sandbox Code Playgroud)

gameBoard是通过NetBeans的GUI Builder定义的JPanel.它具有优选的尺寸,最大尺寸(与优选相同).水平/垂直可调整大小的选项被禁用,但是当此代码运行时,每个按钮水平延伸一行而不会断开.

如果我理解正确,FlowLayout应该在元素到达其包含元素的末尾时将其包装起来.这发生在今天之前,我真的不知道为什么这种行为停止了?

java jlabel alignment jpanel flowlayout

-1
推荐指数
1
解决办法
1521
查看次数

在C中明确演员

我想在C和C++中将任何类型的指针转​​换为int.C和C++的代码必须相同.以下程序适用于C但不适用于C++.

int main(void)
{
    long long a;
    int b = (int)&a;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它适用于C++?

c c++ casting alignment type-conversion

-1
推荐指数
1
解决办法
346
查看次数

对齐名称&lt;p align="left"&gt;

我想通过使用将我的欢迎说明向右对齐,<p align="right"> 但它似乎不起作用..是因为 Session/PHP 不能与 p 对齐吗?

<?php

    session_start();
 if($_SESSION['SESS_admin'] == 0)
  require("do_menu.php");
 else
  require("do_menu3.php");
 require("auth.php");
    require("do_html_header.php");
 do_html_header();
 print"<p align=\"RIGHT\"><h1>Welcome ". $_SESSION['SESS_FIRST_NAME']."!</h1></p>";
 do_menu();

?>
Run Code Online (Sandbox Code Playgroud)

提前致谢!

html php alignment

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

图像未与弹出窗口对齐

嗨,

我创建了一个弹出窗口,该弹出窗口最右边有一个关闭按钮.我尝试通过放置以下对齐图像:

position:absolute;
right:0px;
top:0px;
Run Code Online (Sandbox Code Playgroud)

但它没有正确对齐..可以任何一个帮助.!!!!

这是我的代码..

 <!DOCTYPE>
    <html>
     <head>
      <title> New Document </title>     
 <style>      
      div.irmGraphPopup{
        border:10px solid black;
        width:1000px;
        height:500px;
        position:absolute;
       }

      div.irmGraphPopup span:{
        position:absolute;
        right:0px;
        top:0px;
      }
       </style>
     </head>

     <body>
      <div class="irmGraphPopup">
          <span> <img src="round_black_close2.png" alt="Close"/></span>
       </div>

     </body>
    </html>
Run Code Online (Sandbox Code Playgroud)

html css alignment

-1
推荐指数
1
解决办法
210
查看次数

为什么这些未对齐的指针引用有效?

在 Rust 中,将 a 转换*const u8为 a*const T是可以的,但取消引用强制转换指针是不安全的,因为指向的内存可能不满足T大小、对齐和有效字节模式的要求。我试图提出一个违反对齐要求的示例,但满足其他两个要求。

因此,我生成一个 7 的随机切片u8,并尝试将不同的长度为 4 的子切片解释为 f32 值。任何字节模式都是有效的 f32 ,而 4 u8 是无效的size_of::<f32>()。因此,唯一变化的是子切片指针的对齐方式,该指针从基本切片偏移:

slice:        [ 0 | 1 | 2 | 3 | 4 | 5 | 6 ] 
sub-slices:   [ 0   1   2   3 ]
                  [ 1   2   3   4 ]
                      [ 2   3   4   5 ]
                          [ 3   4   5   6 ]
Run Code Online (Sandbox Code Playgroud)

这是我运行的代码

use std::mem::transmute;
use std::ptr::read;
use std::convert::TryInto;
//use rand::Rng; …
Run Code Online (Sandbox Code Playgroud)

casting alignment rust

-1
推荐指数
1
解决办法
987
查看次数

在固定宽度容器中浮动DIV以继续对齐水平?

我有一个固定宽度的960px容器,我正在调整我的设计,以适应各种屏幕分辨率.在容器中,我有一些DIV使用宽度%和最小宽度的浮动,如:

width:80%;
min-width:200px;
Run Code Online (Sandbox Code Playgroud)

这里的问题是DIVs不是水平排列的; 他们最终落在彼此之下.以前,我DIV的设定宽度(我现在更改为最小宽度).

我目前如何形成DIV的一个例子:

容器:

width: 830px;
float: left;
Run Code Online (Sandbox Code Playgroud)

1 - 科拉姆:

width:100%;
min-width: 200px;
float: left;
Run Code Online (Sandbox Code Playgroud)

第二,科拉姆:

width:100%;
min-width: 200px;
float: left;
Run Code Online (Sandbox Code Playgroud)

第三,科拉姆:

width:100%;
min-width: 200px;
float: left;
Run Code Online (Sandbox Code Playgroud)

等等

在此示例中,1st-colum DIV覆盖容器的整个宽度并向下推动其他DIV.

下面的HTML示例:

<div id="container">
   <div id="1stcolum">Hello world</div>
   <div id="2ndcolum">Hello world</div>
   <div id="3rdcolum">Hello world</div>
</div>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,HTML中也没有任何花哨的东西.

html css containers alignment width

-4
推荐指数
1
解决办法
1063
查看次数