尝试修改字符串文字会导致未定义的行为:
char * p = "wikipedia";
p[0] = 'W'; // undefined behaviour
Run Code Online (Sandbox Code Playgroud)
防止这种情况的一种方法是将其定义为数组而不是指针:
char p[] = "wikipedia";
p[0] = 'W'; // ok
Run Code Online (Sandbox Code Playgroud)
为什么char*导致未定义的行为,而char[]不是?
我需要修改的文件包含以下内容:
block: 16, size: 16, start: 8, length: 4
Run Code Online (Sandbox Code Playgroud)
我想要这个文件,以便block,size的值除以2,而start,length的值将乘以2.
由于我必须对一大堆文件进行这样的修改,我正在考虑使用Sed为我做替换工作.但我不确定在匹配和替换过程中是否允许进行计算.
GDB告诉我,这pthread_kill导致我的程序出现分段错误.基本上我pthread_kill用来检查一个线程是否存在,或者没有给出它的ID.
我一直在网上搜索,发现pthread_kill当TID无效时可能会导致分段错误.是的,我一直在测试我的程序使用"无效"(由我设计)类型的TID int.这可能是真正的原因吗?
#include <stdio.h>
#include <sys/shm.h>
#include <sys/stat.h>
#include <string>
#include <vector>
#include <iostream>
using namespace std;
struct LOCK {
string name;
string type;
vector <string> pids;
};
int main ()
{
int segment_id;
LOCK* shared_memory;
struct shmid_ds shmbuffer;
int segment_size;
const int shared_segment_size = 0x6400;
/* Allocate a shared memory segment. */
segment_id = shmget (IPC_PRIVATE, shared_segment_size,
IPC_CREAT | IPC_EXCL | S_IRUSR | S_IWUSR);
/* Attach the shared memory segment. */
shared_memory = (LOCK*) shmat (segment_id, 0, 0);
printf ("shared memory …Run Code Online (Sandbox Code Playgroud) 我们可以使用placement new在预先分配的内存中创建一个对象.
让我们考虑以下示例:
char *buf = new char[1000]; //pre-allocated buffer
string *p = new (buf) MyObject(); //placement new
string *q = new (buf) MyObject(); //placement new
Run Code Online (Sandbox Code Playgroud)
我在预先分配的缓冲区中创建了两个对象.这两个对象是在缓冲区中随机创建的还是在连续的内存块中创建的?如果我们继续在缓冲区中创建更多对象并希望它们存储在连续的内存块中,我们该怎么办?首先在缓冲区中创建一个数组,然后在数组的元素槽中创建每个对象?
Thread t = new Thread(new Runnable() { public void run() {} });
Run Code Online (Sandbox Code Playgroud)
我想用这种方式创建一个线程.run如果可能的话,如何将参数传递给方法?
编辑:要使我的问题具体,请考虑以下代码段:
for (int i=0; i< threads.length; i++) {
threads[i] = new Thread(new Runnable() {public void run() {//Can I use the value of i in the method?}});
}
Run Code Online (Sandbox Code Playgroud)
根据Jon的回答,它不起作用,因为i未被声明为final.
我想比较两个文件而不管换行符.如果内容相同但换行符的位置和数量不同,我想将一个文档中的行映射到另一个文档中的行.
鉴于:
文件1
I went to Paris in July 15, where I met some nice people.
And I came back
to NY in Aug 15.
I am planning
to go there soon
after I finish what I do.
Run Code Online (Sandbox Code Playgroud)
文件2
I went
to Paris
in July 15,
where I met
some nice people.
And I came back to NY in Aug 15.
I am planning to go
there soon after I finish what I do.
Run Code Online (Sandbox Code Playgroud)
我想要一种算法,能够确定文档1中的第1行包含与文档2中第1行到第5行相同的文本,文档1中的第2行和第3行包含与文档2中的第6行相同的文本,等等.
1 = 1,2,3,4,5
2,3 = …Run Code Online (Sandbox Code Playgroud) 我有一个算法,我已经发现它的运行时复杂性遵循以下公式:
[log(1)]^2 + [log(2)]^2 + [log(3)]^2 + ....... + [log(n)]^2
Run Code Online (Sandbox Code Playgroud)
日志的基数是2.
我如何从这个公式中找出Θ/Ο算法的复杂性?
6*x + 7 = 7*x + 2 - 3*x
Run Code Online (Sandbox Code Playgroud)
当我们将右边移动到等式的左边时,我们需要将操作符标记从+转到 - 反之亦然.
使用java正则表达式replaceAll,我们可以用-s替换所有+'.结果,所有的操作员标志变成了 - 使我们无法恢复所有的+.
作为一种解决方法,我在迭代字符串并将+更改为 - 遇到一个时,反之亦然.但我仍然想知道是否有办法在Java中使用正则表达式在布尔值对之间进行切换?
我试图用括号内的数字本身替换字符串中的任何数字序列.所以输入:
"i ee44 a1 1222"
Run Code Online (Sandbox Code Playgroud)
应该有一个输出:
"i ee(44) a(1) (1222)"
Run Code Online (Sandbox Code Playgroud)
我试图使用String.replace(a,b)实现它,但没有成功.