Questions tagged «new-operator»

16
delete []如何知道它是一个数组?
好吧,我想我们都同意,根据所传递的内容,未定义以下代码所发生的情况, void deleteForMe(int* pointer) { delete[] pointer; } 指针可能是各种不同的事物,因此delete[]对它执行无条件的操作是不确定的。但是,假设我们确实在传递数组指针, int main() { int* arr = new int[5]; deleteForMe(arr); return 0; } 我的问题是,在这种情况下,指针是一个数组,谁知道呢?我的意思是,从语言/编译器的角度来看,它不知道arr数组指针还是指向单个int的指针。哎呀,它甚至不知道是否arr是动态创建的。但是,如果我改为执行以下操作, int main() { int* num = new int(1); deleteForMe(num); return 0; } 操作系统足够聪明,只能删除一个int,而不会通过删除超出该点的其余内存来进行某种“杀戮狂潮”(与strlen和非\0终止字符串进行对比),它将一直持续到点击0)。 那么记住这些事情是谁的工作呢?操作系统是否在后台保留某种类型的记录?(我的意思是,我意识到我在开始这篇文章时首先说的是发生的事情是不确定的,但事实是,“杀人狂潮”的情况没有发生,因此在实际世界中有人会记住。)


8
Malloc与新版-不同的填充
我正在审查使用MPI进行高性能计算(10 ^ 5-10 ^ 6内核)的项目的其他人的C ++代码。该代码旨在允许(可能)不同体系结构上的不同机器之间进行通信。他写了一条评论,内容大致如下: 我们通常使用new和delete,但是在这里我使用malloc和free。这是必要的,因为某些编译器在new使用时会以不同的方式填充数据,从而导致在不同平台之间传输数据时出错。不会发生这种情况malloc。 这与我从标准newvs malloc问题中了解到的任何内容都不符。 new / delete和malloc / free有什么区别?这暗示了编译器可以对对象的大小进行不同的计算(但是,为什么这与使用sizeof?有所不同)。 malloc和placement new vs. new是一个相当受欢迎的问题,但仅涉及new在malloc不使用构造函数的情况下的使用,与此无关。 malloc如何理解对齐方式?说,保证内存可以正确地与任一new或malloc这是我以前认为的。 我的猜测是,他在过去的某个时候误诊了自己的错误,并推断出该错误new并malloc进行了不同程度的填充,我认为这可能是不正确的。但我找不到Google或其他任何问题的答案。 帮我,StackOverflow,您是我唯一的希望!


7
如何在Ruby中添加到现有哈希
关于key => value在Ruby中将一对添加到现有的填充哈希中,我正在研究Apress的Beginning Ruby,并且刚刚结束了哈希章节。 我正在尝试找到最简单的方法来实现散列达到与数组相同的结果: x = [1, 2, 3, 4] x << 5 p x
102 ruby  new-operator  hash 



4
表达式必须具有类类型
我已经有一段时间没有用C ++编写代码了,当我尝试编译这个简单的代码片段时,我陷入了困境: class A { public: void f() {} }; int main() { { A a; a.f(); // works fine } { A *a = new A(); a.f(); // this doesn't } }



4
没有新的C ++对象
这是一个非常简单的问题,但是我好几年都没有正确地完成c ++的工作,所以对此我感到有些困惑。另外,在互联网上查找(而不是尝试)不是最简单的事情(至少对我而言)。 为什么不使用new关键字,它如何工作? 基本上,这是怎么回事? CPlayer newPlayer = CPlayer(position, attacker);
77 c++  new-operator 

10
将onclick事件添加到JavaScript中新添加的元素
我一直试图将onclick事件添加到使用JavaScript添加的新元素中。 问题是当我检查document.body.innerHTML时,我实际上可以看到onclick = alert('blah')已添加到新元素中。 但是,当我单击该元素时,我看不到警报框在起作用。实际上,任何与JavaScript相关的功能都无法正常工作。 这是我用来添加新元素的方法: function add_img() { var elemm = document.createElement('rvml:image'); elemm.src = 'blah.png'; elemm.className = 'rvml'; elemm.onclick = "alert('blah')"; document.body.appendChild(elemm); elemm.id = "gogo"; elemm.style.position='absolute'; elemm.style.width=55; elemm.style.height=55; elemm.style.top=200; elemm.style.left=300; elemm.style.rotation=200; } 这是我所谓的函​​数: <button onclick=add_img()>add image</button> 现在,图像可以完美地在浏览器中绘制。但是,当我单击图像时,不会收到该警报。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.