小编use*_*er7的帖子

为什么这段代码会在64位架构上发生段错误但在32位上运行良好?

我遇到了以下C拼图:

问:为什么以下程序会在IA-64上发生段错误,但在IA-32上运行良好?

  int main()
  {
      int* p;
      p = (int*)malloc(sizeof(int));
      *p = 10;
      return 0;
  }
Run Code Online (Sandbox Code Playgroud)

我知道int64位机器的大小int可能与指针的大小不同(可能是32位,指针可能是64位).但我不确定这与上述计划有什么关系.有任何想法吗?

c pointers segmentation-fault

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

C++访谈:具有纯虚函数的类的vtable

我今天被问到这个面试问题!! (这是一个非常尴尬的电话采访..):

具有虚函数的类的vtable与具有纯虚函数的类有什么区别?

现在,我知道C++标准没有指定关于vtable的任何内容,甚至没有指定v-table的存在......从理论上讲,答案是什么?

我脱口而出,具有纯虚函数的类可以具有vtable,并且其纯虚函数的vtable条目将指向派生类实现.这个假设是否正确?我没有得到面试官的肯定答复.

假设的编译器是否会为仅具有纯虚函数的类创建vtable?如果类包含带定义的纯虚函数怎么办?(如:http://www.gotw.ca/gotw/031.htm).

c++ virtual vtable

13
推荐指数
1
解决办法
8104
查看次数

计算数组中共线的三元组数

我被问到这个采访问题(C++,algos)并且不知道如何解决它.

给定一个数组说Arr [N]包含N个不同点的笛卡尔坐标,计算三元组的数量(Arr [P],Arr [Q],Arr [R]),使得P <Q <R <N并且得到点Arr [ P],Arr [Q],Arr [R]共线(即位于同一直线上).

有任何想法吗?我可以使用什么算法?

c++ algorithm

10
推荐指数
1
解决办法
2925
查看次数

如何修复strcpy以便检测重叠的字符串

在一次采访中,我被要求编写一个实现,strcpy然后修复它,以便它正确处理重叠的字符串.我的实现如下,非常天真.如何修复它以便:

  1. 它检测重叠的字符串和
  2. 检测后,我们如何处理重叠并继续?

char* my_strcpy(char *a, char *b) {

     if (a == NULL || b == NULL) {
         return NULL;
     }
     if (a > b) {
         //we have an overlap?
         return NULL;
     }
     char *n = a;

     while (*b != '\0') {
         *a = *b;
         a++;
         b++;
     }
     *a = '\0';
     return n;
}

int main(int argc, char *argv[])
{
    char str1[] = "wazzupdude";
    char *after_cpy = my_strcpy(str1 + 2, str1);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编辑:

因此,基于@ Secure的 …

c overlap strcpy

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

x + = 1比x = x + 1更有效吗?

x = x + 1,x评估两次?如果是这样,这意味着什么x += 1,x只评估一次?两个表达式如何根据编译器中间代码进行评估?

例如,x++可能意味着:获取位置x,将内容加载x到寄存器中,并增加x内存中的值.

另外我读过,x += 1x它不是一个简单的变量,而是一个涉及数组的表达式时很有用.任何想法为什么会这样?

c performance increment

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

计算数组元素中不同绝对值的数量

我被问到一个面试问题,以找出阵列元素中不同绝对值的数量.我想出了以下解决方案(在C++中),但是面试官对代码的运行时效率不满意.

  1. 我将理解如何提高此代码的运行时效率的指示?
  2. 另外我如何计算下面代码的效率?该for循环执行A.size()时间.但是我不确定STL的效率std::find(在更糟糕的情况下,它可能是O(n)这样的代码O(n²)吗?

代码是:

int countAbsoluteDistinct ( const std::vector<int> &A ) {
  using namespace std;
  list<int> x;

  vector<int>::const_iterator it;
  for(it = A.begin();it < A.end();it++)
    if(find(x.begin(),x.end(),abs(*it)) == x.end())
      x.push_back(abs(*it));
  return x.size();
}
Run Code Online (Sandbox Code Playgroud)

c++ algorithm performance

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

面试问题打印浮点数

以下程序的输出是什么?为什么?

  #include <stdio.h>
  int main()
  {
   float a = 12.5;
   printf("%d\n", a);
   printf("%d\n", *(int *)&a);
   return 0;
  }
Run Code Online (Sandbox Code Playgroud)

我的编译器打印0和1095237632.为什么?

c floating-point printf

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

在O(1)时间内支持以下的数据结构:初始化,插入,删除,查找元素,删除所有元素

面试问题:

提出一个数据结构,它保存从0到n - 1的元素,并支持O(1)时间内的所有以下操作:初始化,元素插入,元素删除,查找元素,删除所有元素.

哈希表(假设没有冲突,即最好的情况)将支持在O(1)中插入和搜索.我不确定删除虽然......任何想法?

language-agnostic complexity-theory big-o data-structures

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

反转整数x中的位

位反转

我发现这个代码用于反转整数x中的位(假设为32位值):

unsigned int
reverse(register unsigned int x)
{
x = (((x & 0xaaaaaaaa) >> 1) | ((x & 0x55555555) << 1));
x = (((x & 0xcccccccc) >> 2) | ((x & 0x33333333) << 2));
x = (((x & 0xf0f0f0f0) >> 4) | ((x & 0x0f0f0f0f) << 4));
x = (((x & 0xff00ff00) >> 8) | ((x & 0x00ff00ff) << 8));
return((x >> 16) | (x << 16));
}
Run Code Online (Sandbox Code Playgroud)

我无法理解此代码背后的逻辑/算法.所有神奇数字的目的是什么?

bit

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