小编mac*_*fij的帖子

在linux内核哈希表实现中使用双指针

我试图了解链接列表和哈希表的Linux内核实现.这里是实现的链接.我理解链表实现.但我很困惑为什么在hlist(**pprev)中使用双指针.hlist的链接在这里.我知道hlist用于哈希表的实现,因为列表的头只需要一个指针,它节省了空间.为什么不能使用单个指针(只是*像链表一样)?请帮我.

c linux linux-kernel

19
推荐指数
1
解决办法
6373
查看次数

SDL:如何停止音频 - 不恢复,SDL_PauseAudio(1)实际上做了什么?

开发使用CoreAudio框架的iOS应用程序,我正在处理SDL reg的IMHO废话行为.播放音频.SDL循环播放音频,只有如何触发播放的方式是调用SDL_PauseAudio(0),而如何停止它的唯一方法(没有其他副作用,这里我不会谈到)是调用SDL_PauseAudio(1).我所知道的.

SDL在这里有什么问题?简单 - 下一次调用SDL_PauseAudio(1)实际上恢复播放,导致框架在要求新的声音数据*之前播放一些混乱*.这是因为SDL_CoreAudio.c实现回放循环的方式.

这意味着,SDL不实现STOP,它只实现PAUSE/RESUME并错误地管理音频处理.这意味着,如果您播放sampleA,并希望稍后播放sampleB,您将听到sampleA的片段,同时期望只听到sampleB的播放.

如果我错了,请纠正我.

如果不是,这是我的差异,是我用来实现也将停止行为:只要我完成播放sampleA,我打电话SDL_PauseAudio(2)让循环播放退出并SDL_PauseAudio下一个电话(0)打再次启动,这一次没搞成从sampleA,但正确播放来自smapleB的数据.

Index: src/audio/coreaudio/SDL_coreaudio.c
===================================================================
--- src/audio/coreaudio/SDL_coreaudio.c
+++ src/audio/coreaudio/SDL_coreaudio.c
@@ -250,6 +250,12 @@
             abuf = &ioData->mBuffers[i];
             SDL_memset(abuf->mData, this->spec.silence, abuf->mDataByteSize);
         }
+       if (2 == this->paused)
+       {
+           // this changes 'pause' behavior to 'stop' behavior - next
+           // plyaing starts from beginning, i.e. it won't resume
+           this->hidden->bufferOffset = this->hidden->bufferSize;
+       }
         return 0;
     }
Run Code Online (Sandbox Code Playgroud)

我感到很惭愧,我编辑了SDL代码,但我与作者没有关系,也没有找到任何帮助.嗯,对我来说很奇怪,在SDL中似乎没有人需要STOP行为?

c sdl core-audio playback

11
推荐指数
1
解决办法
1669
查看次数

创建可调整大小的网站缺乏CSS技能 - CSS形状

这是我的第一个问题,所以请指出我犯的任何错误.

我不得不创建一个看起来像团队旗帜的网页.我设法做到了这一点,但只有固定大小的元素:在此输入图像描述

在其他分辨率,它只是不适合屏幕.
代码:

html

<div id="centered">
    <div id="triangle-down"></div>
    <div id="triangle-right"></div>
    <div id="triangle-left"></div>
    <div id="triangle-up"></div>
    <div id="diamond-narrow"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

    #centered {
        position:relative; clear:left;
        height:766px; width:1245;
        margin:0 auto;
        background:#fff;
        z-index: 0;
    }

    #triangle-up {
        position: absolute;
        margin-left: 281px;
        margin-top: 555px;
        width: 0;
        height: 0;
        border-left: 341px solid transparent;
        border-right: 341px solid transparent;
        border-bottom: 211px solid #3b5998;
        z-index: 1;
    }

    #triangle-down {
        position: absolute;
        margin-left: 281px;
        width: 0;
        height: 0;
        border-left: 341px solid transparent;
        border-right: 341px solid transparent;
        border-top: 211px solid #3b5998; …
Run Code Online (Sandbox Code Playgroud)

html javascript css svg css-shapes

6
推荐指数
1
解决办法
366
查看次数

是否可以使用 C 编程访问物理内存地址?

例如,当我们写:
int a;
和做&a给我们一些十六进制形式的地址0x12345678,我们称之为虚拟地址。
现在,当我们尝试这样做时
int *temp = 0xfe000000;
,这个地址的行为像虚拟地址还是物理地址?据我所知,虚拟地址是由操作系统给出的,由 MMU 进一步转换为物理地址。

据我所知,分页机制发生在将虚拟地址映射到可用物理地址之间。当我们给一个指针一个地址时会发生什么?该地址是否像虚拟地址一样,然后由 MMU 处理以指向特定的物理地址,或者它本身就像一个物理地址?

int temp;
printf("%x \n", &temp);
int *temp2 = 0xfe000000; //This is just an example address. It could be any address
Run Code Online (Sandbox Code Playgroud)


这个地址 (0xfe000000) 是真实的物理地址还是虚拟地址?

c operating-system

5
推荐指数
1
解决办法
954
查看次数

该程序中的堆栈指针如何通过 call 和 ret 更改

我的问题涉及当上下文发生变化时,尤其是与RSP和相关的行为RBP

鉴于这个非常简单的程序:

Reading symbols from ./function_call...done.
(gdb) disass main
Dump of assembler code for function main:
   0x00000000004004d6 <+0>: push   rbp
   0x00000000004004d7 <+1>: mov    rbp,rsp
   0x00000000004004da <+4>: mov    esi,0x2
   0x00000000004004df <+9>: mov    edi,0x1
   0x00000000004004e4 <+14>:    call   0x4004b6 <add_and_7>
   0x00000000004004e9 <+19>:    mov    eax,0x0
   0x00000000004004ee <+24>:    pop    rbp
   0x00000000004004ef <+25>:    ret    
End of assembler dump.
(gdb) disass add_and_7
Dump of assembler code for function add_and_7:
   0x00000000004004b6 <+0>: push   rbp
   0x00000000004004b7 <+1>: mov    rbp,rsp
   0x00000000004004ba <+4>: mov    DWORD PTR [rbp-0x14],edi …
Run Code Online (Sandbox Code Playgroud)

x86 assembly calling-convention

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

Nivo Slider不使用IE7

我已经在本网站上回顾了很多关于Nivo Slider这个问题的帖子.我在javascript中检查了我的逗号,它看起来对我来说:

<script type="text/javascript">
$(window).load(function() {
    $('#slider').nivoSlider({
        effect:'fade', 
        slices:15,
        animSpeed:500, 
        pauseTime:4000,
        startSlide:0,
        directionNav:false, 
        directionNavHide:false, 
        controlNav:true,
        controlNavThumbs:false, 
        controlNavThumbsFromRel:false, 
        controlNavThumbsSearch: '.jpg', 
        controlNavThumbsReplace: '_thumb.jpg', 
        keyboardNav:true,
        pauseOnHover:true, 
        manualAdvance:false, 
        captionOpacity:0.9, 
        beforeChange: function(){},
        afterChange: function(){},
        slideshowEnd: function(){}, 
        lastSlide: function(){}, 
        afterLoad: function(){} 
    });
});
</script>
Run Code Online (Sandbox Code Playgroud)

这是它引用的html.文件夹路径似乎是正确的(毕竟,它在其他浏览器中工作!):

<div id="slider_wrapper">
        <div id="slider">
            <img src="/CoVPrototype/images/nivoslider/_img1.jpg" alt="" title="Discover City Parks" />
            <img src="/CoVPrototype/images/nivoslider/_img2.jpg" alt="" title="Enjoy Our Beautiful City" />
            <img src="/CoVPrototype/images/nivoslider/_img3.jpg" alt="" title="This is an example of a caption" />
            <img src="/CoVPrototype/images/nivoslider/_img4.jpg" alt="" title="This is Our Home" />
            <img src="/CoVPrototype/images/nivoslider/_img5.jpg" alt="" …
Run Code Online (Sandbox Code Playgroud)

html css slider internet-explorer-7 nivo-slider

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