小编Mat*_*ery的帖子

是否可以只打印出C字符串的某个部分,而不需要创建单独的子字符串?

说我有以下内容:

char* string = "Hello, how are you?";
Run Code Online (Sandbox Code Playgroud)

是否可以只打印出该字符串的最后5个字节?那么前5个字节呢?是否有一些变化printf可以允许这个?

c printf c-strings

64
推荐指数
2
解决办法
8万
查看次数

jQuery - 拥有多个$(document).ready(function(){})是不是很糟糕;

$(document).ready(function() {});在您的页面上有多个不好吗?我有一个网站,我在不同的时间加载不同的东西.我解除了内部的部分回发功能,$(document).ready()但我一次在页面上有大约4或5个.这是一种不好的做法吗?具体来说,它会导致任何性能问题吗?

ajax jquery

45
推荐指数
2
解决办法
2万
查看次数

如果大小为0,可以使用空指针调用memset()吗?

出于这样或那样的原因,我想手动滚动归零版本malloc().为了最大限度地减少算法的复杂性,我想写:

void * my_calloc(size_t size)
{
    return memset(malloc(size), 0, size);
}
Run Code Online (Sandbox Code Playgroud)

这个定义明确size == 0吗?可以malloc()使用零大小调用,但这允许它返回空指针.请问后续调用memset是否正常,或者这是未定义的行为,我需要添加一个条件if (size)

我非常想避免多余的条件检查!

假设malloc()暂时没有失败.实际上那里也会有一个手动滚动版本malloc(),它会在失败时终止.

像这样的东西:

void * my_malloc(size_t size)
{
    void * const p = malloc(size);
    if (p || 0 == size) return p;
    terminate();
}
Run Code Online (Sandbox Code Playgroud)

c malloc memset

15
推荐指数
3
解决办法
8036
查看次数

x86程序集:在Linux上进行系统调用之前是否应该保存所有寄存器?

我有以下代码打开文件,将其读入缓冲区然后关闭文件.

关闭文件系统调用要求文件描述符号在ebx寄存器中.ebx寄存器在读取系统调用之前获取文件描述符编号.我的问题是,在我进行读取系统调用之前,我应该将ebx寄存器保存在堆栈中还是某个地方(可以将80h垃圾邮件放入ebx寄存器吗?).然后恢复ebx寄存器以进行关闭系统调用?或者我的代码是否正确且安全?

我运行了下面的代码并且它可以工作,我只是不确定它是否通常被认为是良好的汇编实践,因为我没有在int 80h读取调用之前保存ebx寄存器.

;; open up the input file 
mov eax,5        ; open file system call number
mov ebx,[esp+8]  ; null terminated string file name, first command line parameter
mov ecx,0o       ; access type: O_RDONLY
int 80h          ; file handle or negative error number put in eax
test eax,eax
js Error         ; test sign flag (SF) for negative number which signals error

;; read in the full input file
mov ebx,eax            ; assign input file descripter
mov eax,3              ; …
Run Code Online (Sandbox Code Playgroud)

linux x86 assembly system-calls

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

将剪贴板设置为图像 - pbcopy

如何使用pbcopy将图像设置为剪贴板?

这不起作用:

cat image.png | pbcopy
Run Code Online (Sandbox Code Playgroud)

macos bash clipboard pbcopy

9
推荐指数
2
解决办法
2699
查看次数

你如何使用atoi来分配char数组的各个元素?

所以我们都可能知道,atoi将char转换为数字.但是,如果你只想要一个数组元素而不是整个数组,你会怎么做?

请看以下内容:

for (h = 0; h < 5; h++)
{
    num[h] = atoi(temp[h]);
}
Run Code Online (Sandbox Code Playgroud)

假设num是一个类型的数组int,temp是和type的数组char.这给了我一个恼人的转换问题:

从'char'到'const char*'的转换无效

有关如何使用atoi将char数组的单个元素转换为int的任何建议?

c atoi

7
推荐指数
2
解决办法
4900
查看次数

使用gcc/g ++时抑制系统调用

我在我的大学局域网中有一个门户网站,人们可以将代码上传到C/C++中的编程难题.我想使门户网站安全,以便人们无法通过提交的代​​码进行系统调用.可能有几种解决方法,但我想知道我是否可以通过设置一些聪明的gcc标志来做到这一点.默认情况下<unistd.h>,libc似乎包含,它似乎是声明系统调用的基本文件.有没有办法告诉gcc/g ++在编译时'忽略'这个文件,这样unistd.h中声明的所有函数都不能被访问?

linux gcc g++

7
推荐指数
1
解决办法
358
查看次数

套接字的描述符可以转换为文件指针吗?

我以下列方式获得了TCP套接字的描述符:

int desc = accept(socket_descriptor, &client_address, &len)

现在从这个描述符desc我想得到一个文件指针.可以fdopen()在这里使用吗?

我想获取文件指针的原因是因为我正在更改将数据写入本地文件的现有代码.现在,我想扩展其功能,以便它可以替代地写入TCP客户端.我不想重写所有功能,并且想要以某种方式使用现有的基础设施.现有函数使用文件指针写入文件.我想知道是否有可能使相同的函数写入TCP流而不进行任何更改.

c posix tcp

7
推荐指数
1
解决办法
3172
查看次数

推动64位英特尔osx

我想在堆栈上按64位地址,如下所示,

__asm("pushq $0x1122334455667788");
Run Code Online (Sandbox Code Playgroud)

但我得到编译错误,我只能按照以下方式推送,

__asm("pushq $0x11223344");
Run Code Online (Sandbox Code Playgroud)

有人能帮助我理解我的错误吗?

我是集会的新手,所以如果我的问题听起来很愚蠢,请原谅.

macos assembly x86-64

7
推荐指数
4
解决办法
6803
查看次数

kvm中超级呼叫的输入在哪里?

我试图了解linux中的virtio机制.我读到kick函数会通知主机端有关新发布的缓冲区.我特别关注virtio_net.一旦数据包准备好传输,就会在这里调用kick函数.从这里我追踪了这个电话,我认为它是这样的.从这里到哪里去了?哪个代码包含virtio的后端驱动程序.管理程序中的代码将在何处进行?谢谢...

谢谢,巴拉

linux kvm linux-kernel

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

标签 统计

c ×4

linux ×3

assembly ×2

macos ×2

ajax ×1

atoi ×1

bash ×1

c-strings ×1

clipboard ×1

g++ ×1

gcc ×1

jquery ×1

kvm ×1

linux-kernel ×1

malloc ×1

memset ×1

pbcopy ×1

posix ×1

printf ×1

system-calls ×1

tcp ×1

x86 ×1

x86-64 ×1