小编Nav*_*een的帖子

等待命令在C#中完成

我是C#的新手,并尝试开发一个小型应用程序,在内部打开命令提示符并在此处执行一些命令.这是我到目前为止所做的:

    m_command = new Process();
    m_command.StartInfo.FileName = @"cmd.exe";
    m_command.StartInfo.UseShellExecute = false;
    m_command.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
    m_command.StartInfo.CreateNoWindow = true;
    m_command.StartInfo.RedirectStandardInput = true;
    m_command.StartInfo.RedirectStandardOutput = true;

    m_command.Start();

    m_reader = m_command.StandardOutput;
    m_writer = m_command.StandardInput;

    m_writer.WriteLine("Somecommand"); //execute some command
Run Code Online (Sandbox Code Playgroud)

如您所见,我已重定向输入和输出.我的问题是如何同步执行"some命令",即我想使用重定向输出读取命令的结果.为此,我必须等到我使用WriteLine调用的命令才能完成.我怎么做?

c#

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

64位系统中以兼容模式运行的虚拟地址空间

我在64位Windows操作系统上看到,可用的用户虚拟地址空间是8个terra字节.但是,如果我们正在执行的程序在32位兼容模式下运行,那么这个用户空间仍然可用吗?或者它的行为类似于普通的32位操作系统,并且只提供2GB的用户地址空间?

64-bit compatibility virtual-address-space

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

InterlockedIncrement用法

在阅读InterlockedIncrement函数时,我看到了传递的变量必须在32位边界上对齐的注释.通常我见过使用InterlockedIncrement的代码,如下所示:

class A
{
 public:
   A();
   void f();

 private:
  volatile long m_count;
};

A::A() : m_count(0)
{
}

void A::f()
{
  ::InterlockedIncrement(&m_count);
}
Run Code Online (Sandbox Code Playgroud)

以上代码在多处理器系统中是否正常工作,还是应该更加关注?

c++ winapi multithreading multicore interlocked

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

套接字编程C/C++ - recv函数挂起?

我的recv函数在从服务器获得响应时挂起.

c/c ++中的客户端代码:

void sockStuff() {

 int sock, bytes_recieved,bytes_send;
 char send_data[1024], recv_data[4096];

 struct hostent *host;
 struct sockaddr_in server_addr;

 host = gethostbyname("127.0.0.1");

 if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
  perror("SocketError");
  exit(1);
 }
 server_addr.sin_family = AF_INET;
 server_addr.sin_port = htons(50500);
 server_addr.sin_addr = *((struct in_addr *) host->h_addr);
 bzero(&(server_addr.sin_zero), 8);


 if (connect(sock, (struct sockaddr *) &server_addr, sizeof(struct sockaddr))
   == -1) {
  perror("ConnectToError");
  exit(1);
 }


    bytes_send = send(sock, a, strlen(a), 0);
    bytes_send = shutdown(sock, 1);


 bytes_recieved = recv(sock, recv_data, 4096, 0); //Where the program …
Run Code Online (Sandbox Code Playgroud)

c sockets

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

选择具有唯一性的STL容器并保持插入顺序

我无法决定在以下情况下使用哪个STL容器:

  1. 我想保留元素的插入顺序
  2. 容器中的元素必须是唯一的.

有没有现成的容器可用于此?我不想使用向量,然后std::findpush_back每次执行之前执行.

c++ stl

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

面积不规则

我有一组点在图像上.这些点形成不规则的闭合形状.我需要找到这个形状的区域.是否有任何身体是用于计算面积的常规算法?或者在诸如boost之类的库中是否有任何支持?我正在使用C++.

c++ math shapes

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

C++重载new []查询:参数的大小是多少?

我有像这样的重载运算符new []

void * human::operator new[] (unsigned long int count){
      cout << " calling new for array with size  = " << count <<  endl  ;
      void * temp = malloc(count) ;  
      return temp ; 
}
Run Code Online (Sandbox Code Playgroud)

现在打电话

human * h = new human[14] ;
Run Code Online (Sandbox Code Playgroud)

比方说sizeof(human) = 16,但计算它的打印是232,这是14*16 + sizeof(int*)= 224 + 8.

为什么要分配这个额外的空间?它在哪里记忆?因为当我打印*h或者h[0]我得到相同的结果时,所以它不在内存块的开头.它是否正确或我在这里遗漏了一些东西?

c++ overloading new-operator

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

你如何对依赖于许多其他类的类进行单元测试?

我听说通过单元测试我们可以捕获代码中的大部分错误,我真的相信这是真的.但我的问题是在大型项目中,每个类依赖于许多其他类,你如何进行单元测试?由于编写存根所需的复杂性和时间,所以对其他所有类进行存根没有多大意义.你对此有何看法?

unit-testing

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

内存密集型应用中的内存管理

如果您在Windows上使用C++开发内存密集型应用程序,您是否选择编写自己的自定义内存管理器以从虚拟地址空间分配内存,或者允许CRT控制并为您执行内存管理?我特别关注堆上小对象的分配和释放造成的碎片.因此,我认为只要有足够的内存但是碎片化,这个过程就会耗尽内存.

c++ windows optimization memory-management

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

每个进程允许的最大堆使用量

我使用malloc来分配内存和内存要求都大于1GB.程序崩溃......

我想问一下这个问题是否可以解决?如果是的话怎么样?

我的RAM大小为3GB,使用32位Windows操作系统并使用vc ++编程

c++ heap memory-management visual-c++

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