这是我的一本书中的一个问题(没有附上答案),我已经考虑了几天了.答案很简单,C++代码最终会崩溃,因为它在每次迭代后都会创建一个垃圾内存单元?
考虑以下Java和C++代码片段,这是基于GUI的应用程序的两个版本的一部分,它收集用户首选项并使用它们来组装命令及其参数.方法/函数getUserCommandSpecification()返回表示命令代码及其参数的字符串.返回的字符串用于构建所需的命令,然后执行该命令.
假设如下:
(i)在Command对象的while循环中创建(在Java情况下由cmd引用或在C++情况下由cmd指向),不再引用或使用对生成的对象的引用/指针cmd.
(ii)应用程序还定义了一个类Command及其方法/函数execute().
一个.下面详述的两个代码版本中的哪一个最终会崩溃.
湾 解释为什么程序版本崩溃而另一个版本没有崩溃.
Java代码
...
while (true) {
String commandSpecification = getUserCommandSpecification();
Command cmd = new Command(commandSpecification);
cmd.execute();
}
...
Run Code Online (Sandbox Code Playgroud)
C++代码
...
while (true) {
string commandSpecification = getUserCommandSpecification();
Command* cmd = new Command(commandSpecification);
cmd -> execute();
}
...
Run Code Online (Sandbox Code Playgroud) 我的问题是:
1.)如何让父进程永远死?我知道这没有完成,因为父亲是第一个运行的pid,但我不知道如何改变它.
2.)如何让我的子进程像他一样同时执行?我甚至把这个数字提高到很高,看它是不是巧合,但似乎不是.
编辑:解决方案
1.)在内部默认
2中添加了两次wait(NULL).)正在发生.用睡眠(1)来证明它.
我的代码如下
#include <stdio.h>
int main() {
int pid, i;
pid = fork();
switch(pid) {
case -1:
// error
printf("Fork error");
break;
case 0:
// child process
printf("First child is born, my pid is %d\n", getpid());
for(i=1; i<10; i++)
printf("First child executes iteration %d\n", i);
printf("First child dies quietly.\n");
break;
default:
// parent process
printf("Parent process is born, my pid is %d\n", getpid());
pid = fork();
switch(pid) {
case -1:
// error
printf("Fork error");
break; …Run Code Online (Sandbox Code Playgroud) 我只想绘制一堆构成"立方体"的线条.我不能为我的生活弄清楚为什么这会产生黑屏.调试器不会在任何时候中断.
我确定这是我的指针的一个问题,因为我在普通的c ++和OpenGL中只对他们不太好,它变得更糟.
const char* vertexSource =
"#version 150\n"
"in vec3 position;"
"void main() {"
" gl_Position = vec4(position, 1.0);"
"}";
const char* fragmentSource =
"#version 150\n"
"out vec4 outColor;"
"void main() {"
" outColor = vec4(1.0, 1.0, 1.0, 1.0);"
"}";
int main() {
initializeGLFW();
// Initialize GLEW
glewExperimental = GL_TRUE;
glewInit();
// Create Vertex Array Object
GLuint vao;
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
// Create a Vertex Buffer Object and copy the vertex data to it
GLuint vbo;
glGenBuffers( 1, &vbo …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个表单,该表单接受用户输入的名字和姓氏,并打印一个结合这两者的欢迎消息.我想将输入内容组合到一个网格面板中,然后将"Go"按钮和在另一个面板中显示消息的文本字段分组,并使用BorderLayout在一个框架内将它们嵌套在一起.
通用布局:
(在3x2网格中)
First Name: __________________________
Last Name: __________________________
Age: _______________
Run Code Online (Sandbox Code Playgroud)
"GO BUTTON""欢迎马克萨默斯"
教授想把它全部放在一个.java文件中,这是我的问题.我通常将这些东西分开然后扩展类并没有问题.我要做的是将输入和输出面板保存在我的构造函数下,然后在我的main下创建
JFrame frame = new JFrame();
Run Code Online (Sandbox Code Playgroud)
然后
add(new CalebBreckonHW3(320,120));
Run Code Online (Sandbox Code Playgroud)
从而在我的700x700 JFrame"框架"中放置一个320x120面板.我收到一条错误消息,但我无法从静态上下文中引用非静态方法add(java.awt.Component).我不能将我的主要设置为非静态或我会收到错误.
我现在正在通过一个可以指向正确的方向向我添加代码的过程吗?
import java.awt.*;
import javax.swing.*;
public class CalebBreckonHW3 extends JFrame {
private JButton jbtGreet = new JButton("Greet Me");
private JLabel firstOprLbl = new JLabel("First name");
private JLabel lastOprLbl = new JLabel("Last name");
private JLabel ageOprLbl = new JLabel("Age");
private JTextField jtfFirst = new JTextField(10);
private JTextField jtfLast = new JTextField(15);
private JTextField jtfAge = new JTextField(3); …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个立方体.我希望立方体本身是清晰的(黑色,因为背景是黑色的),但我希望12条线条变得薄而白.唯一的方法是创建线条并将它们放在边缘上吗?或者有不同的方法来接近它吗?
原因是我必须创造出在盒子里面弹跳的球.
也许我应该做glBegin(GL_LINES),甚至不担心表面会碰撞,因为我可以用数学方法创建它?
我只是这样创造我的方面:
glBegin(GL_POLYGON);
glVertex3f( -0.5, -0.5, 0.5 );
glVertex3f( -0.5, 0.5, 0.5 );
glVertex3f( -0.5, 0.5, -0.5 );
glVertex3f( -0.5, -0.5, -0.5 );
glEnd();
Run Code Online (Sandbox Code Playgroud) 当我在a的SELECT子句中添加一个新参数时UNION,我会得到更多记录......这怎么可能?是不是UNION只是将它们混合在一起?例:
编辑:他们绝对不同.该code列是"IN"或"OUT",这就是我用来分隔两者的原因.
EDIT2:UNION ALL给了我80条记录,就像它应该的那样,但它很奇怪,因为我的两个SELECT语句绝对不同.
最终编辑:最终问题是我的一个SELECT语句中的记录不是DISTINCT,而是在两个SELECT语句之间.谢谢大家.
-- Yields 76 records
SELECT
f.date
, f.code
, f.cost
FROM a.fact f
WHERE f.code = 'IN'
UNION
SELECT
f2.date
, f2.code
, f2.cost
FROM a.fact2 f2
WHERE f2.code = 'OUT'
;
-- Yields 80 records
SELECT
f.key
, f.date
, f.code
, f.cost
FROM a.fact f
WHERE f.code = 'IN'
UNION
SELECT
f2.key
, f2.date
, f2.code
, f2.cost
FROM a.fact2 f2
WHERE f2.code = 'OUT' …Run Code Online (Sandbox Code Playgroud) 我向你保证,我现在已经搜索了大约两个小时.我发现了一些应该有效的,但他们没有.
我有一行由不同数量的数字组成,用空格分隔.我想在第三个数字后删除所有内容.
我应该说我写的所有内容都假设\S\s\S\s\S与前三个数字相符.空间介于1和2之间,以及2和3之间.
我预计以下工作:
s/^.*?[\S\s\S\s\S].{5}//s;
但它与我想要的完全相反.
我想2 3 0 4 5 6 7 1 0 1 2成为2 3 0
我真的更愿意保持替代.我已经尝试了一个人提到的后视,我没有运气.在我尝试这些命令之前,我应该将前3个数字保存为字符串吗?
编辑:
我应该澄清一下,这些数字也可以是1.57或1.00E01的形式.当我试图将其用于基线工作时,我有整数.
我正在绘制一个基本多边形,其中5个边看起来几乎像C形.
(50,60) _____(70,60)
| /
| /
| /(60,40)
| \
| \
(50,20)|____\(70,20)
Run Code Online (Sandbox Code Playgroud)
非常直截了当.
我用的时候
wcPt2D verts[5] = {{50,20}, {70,20}, {**60**,40}, {70,60}, {50,60}};
Run Code Online (Sandbox Code Playgroud)

我明白了 预期.但是当我改变那个中心部分时
wcPt2D verts[5] = {{50,20}, {70,20}, {**51**,40}, {70,60}, {50,60}};
Run Code Online (Sandbox Code Playgroud)
我明白了

这显然不是左侧的1个单位/图像1左侧的9个单位,并且它明显地将y值降低了大约10个单位.为什么是这样?
void polygon (wcPt2D *verts)
{
GLint k;
glBegin(GL_POLYGON);
for (k = 0; k < 5; k++)
{
glVertex2f(verts [k].x,verts [k].y);
}
glEnd();
}
Run Code Online (Sandbox Code Playgroud) 我正在使用这里找到的教程.我正在使用GLFW.我的窗口加载正常,但在打电话时
GLuint vertexBuffer;
glGenBuffers( 1, &vertexBuffer );
printf( "%u\n", vertexBuffer );
Run Code Online (Sandbox Code Playgroud)
它不是写入控制台,如果我关闭openGL窗口它会中断(不是我关闭控制台).我猜这指针有问题吗?但对我来说似乎是正确的,而且正如他在教程中所拥有的那样.
这是我的整个,非常小的.cpp(VS2012):
#define GLEW_STATIC
#include <GL/glew.h>
#include <GL/glfw.h>
#include <stdio.h>
#include <stdlib.h>
#pragma comment( lib, "glfw.lib")
#pragma comment( lib, "opengl32.lib")
#pragma comment( lib, "glew32s.lib")
int main() {
glfwInit();
glfwOpenWindowHint( GLFW_OPENGL_VERSION_MAJOR, 3 );
glfwOpenWindowHint( GLFW_OPENGL_VERSION_MINOR, 2 );
glfwOpenWindowHint( GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE );
glfwOpenWindowHint( GLFW_WINDOW_NO_RESIZE, GL_TRUE );
glfwOpenWindow( 800, 600, 0, 0, 0, 0, 0, 0, GLFW_WINDOW );
glfwSetWindowTitle( "OpenGL" );
printf("This works");
while( glfwGetWindowParam( GLFW_OPENED ) ) {
glfwSwapBuffers(); …Run Code Online (Sandbox Code Playgroud) 首先,这是一个作业,所以你想要建议的大多数非常酷的预先编写的函数,我将不被允许使用.
我有几张桌子都有字段
creation_date
created_by
last_update_date
last_updated_by
Run Code Online (Sandbox Code Playgroud)
我需要编写一个触发器来填充这些内容以进行创建或更新.问题是,这些表的空值对我来说是个问题.例:
CREATE TABLE parts
(
pno NUMBER,
pname VARCHAR2(50) NOT NULL,
qoh NUMBER NOT NULL,
price NUMBER(5,2),
reorder_level NUMBER(2),
creation_date DATE NOT NULL,
created_by VARCHAR2(10) NOT NULL,
last_update_date DATE NOT NULL,
last_updated_by VARCHAR2(10) NOT NULL,
CONSTRAINT parts_PK PRIMARY KEY (pno))
Run Code Online (Sandbox Code Playgroud)
这些NOT NULL是给我的,我不允许改变它们.所以我很难将其概念化.
我在想我的触发器看起来像
CREATE OR REPLACE TRIGGER pcreate
BEFORE UPDATE on parts
FOR EACH ROW
BEGIN
UPDATE
SET creation_date = SYSDATE;
SET created_by = USER;
SET last_update_date = SYSDATE;
SET last_updated_by …Run Code Online (Sandbox Code Playgroud) 我试图让3行做一些事情:第1行旋转45度,有些翻译第1行不透明度0第1行旋转-45deg和一些翻译
<a href = "#"><div id = "menu" onclick="menu()">
<div id = "lineOne">1</div>
<div id = "lineTwo">1</div>
<div id = "lineThree">1</div>
</div>
</a>
function menu()
{
//Show Differnet Button
document.getElementById('lineOne').style.WebkitTransform = "rotate(45deg) translate3d(10px,10px,0)";
document.getElementById('lineTwo').style.opacity = ".3";
document.getElementById('lineThree').style.WebkitTransform = "rotate(-45deg) translate3d(10,-10px,0)";
}
#lineOne, #lineTwo, #lineThree, #line4, #line5, #line6
{
margin-top: 6px;
margin-left: 30px;
position: relative;
top: 0px;
right: 0px;
width: 50%;
height: 7px !important;
background: black;
color: rgba(1,1,1,0) !important;
}
Run Code Online (Sandbox Code Playgroud)
我在JS Fiddle上的代码是上面的,我得到的唯一结果是不透明度,第一个旋转和翻译.没有其他的.我完全忽略了其余的事情.我能做什么?