问题列表 - 第47706页

为什么我在函数中分配了指针内存,但它也是NULL?

代码使我困惑.

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

void create_int(int *p)
{
    p = (int *) malloc(sizeof(int));
}

int main()
{
    int *p = NULL;

    create_int(p);

    assert(p != NULL);  /* failed. why? I've allocated memory for it. */

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c

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

C字符指针算法

我有以下代码在我初始化的行崩溃ch:

    char * p = "Test";
    char ch = *p++;
    printf("Here : %s\n%c", p, ch);
Run Code Online (Sandbox Code Playgroud)

但是以下代码没有问题:

    char * p = "Test";
    char ch = *p++;
    ch++;
    printf("Here : %s\n%c", p, ch);
Run Code Online (Sandbox Code Playgroud)

c pointers

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

.NET客户端 - 服务器应用程序被冻结,需要修复想法!

你好,Stack Overflow的好人,
我有一个.NET客户端 - 服务器应用程序,运行着几百个客户端.该项目大约一年前从VB6迁移到.NET,它是卡片/棋盘游戏的平台.虽然我会尝试尽可能多地提供详细信息,但问题是如果内部有40-70名玩家,则会冻结频道.

建筑

1.服务器(.NET 4.0)

  • 分为三个项目:ServerNET,Listener,Channel
  • 监听器就像客户端首先连接的登录服务器.它负责检查版本和帐户信息等内容.还允许客户端选择要连接的通道.它基本上是一个do-while中的TCPListener,可以监听任何试图永久连接的人.这不是双方冻结的原因.
  • Channel表示单个端口,客户端在使用Listener完成后连接到Channel.就像航天飞机一样,这是主要部分.与MIRC频道类似,它将所有用户绑定在内,大部分数据都发送给同一频道内的人,如聊天,以及由服务器托管的其他玩家可以加入的游戏.这是一个控制台应用程序,可作为玩家的中心.播放器信息保存在"Client"类中,该类包括TCPClient和一些其他属性.每个客户端都使用一个线程运行,并进行由服务器处理的异步调用.这些"Client"对象也保存在名为"ClientCollection"的集合类中.当内部大约有40-70名玩家时,频道会被冻结.每个频道最多允许100名玩家.
  • ServerNET是整个系统所涉及的所有其他常规内容,而不是通道特定的.这是一个表单应用程序,并运行服务器选项之类的东西.

2.客户端(.NET 2.0)

  • 使用TCPClient运行,主要是单线程,而服务器是多线程.
  • 必须使用.NET 2.0.
  • 主要由视觉效果和其他非重要内容组成.

当有40多个客户端连接到一个通道时,它开始被完全随机冻结(或者就是我们现在所拥有的,没有任何指导或足够的数据来指出什么是完全错误的).我们真的不认为网络流量是问题(不太确定)因为我们已经在具有各种设置的不同服务器机器上尝试过它.我们使用的所有服务器机器都能够处理大量的过程硬件.所以这是关于方法以及代码方面的内容.

我们努力解决这个问题的原因是我们不确定是什么导致了这个问题.请查看以下示例:
系统A在其频道#1中有55个人在线,并且无论如何它都不会被冻结.系统A使用A1 IP,通道在16xxx端口.
系统B在其频道#4中有25人在线,并且随机冻结一两分钟.系统B使用B1 IP和18xxx作为通道端口.它与系统A在同一台机器上,不会被冻结.

总而言之,它看起来与在线人数无关,但在数字上升时更常发生.

我们尝试在Channel项目的循环do循环中滚动Application.DoEvents(),认为某些X进程导致通道冻结状态几分钟,从而导致通道暂停.然后它会在几秒钟内执行在冻结时排队的所有操作.每个频道的CPU使用率平均在7%-20%之间,看起来好像越来越好.然而,这不是永久有效的解决方案.

我们怀疑的事情:

  • 保存玩家和TCPClients的ClientCollection继承自CollectionBase.也许这会在同步过程中造成一些混乱.这曾经是当天的阵列,我们遇到的问题更少.也许它不应该从CollectionBase继承,而是其他什么?
  • 我们使用SyncLock(在C#中锁定)来同步ClientCollection.(虽然我们在开始使用锁之前遇到了这个问题)

服务器信息
Intel Xeon X3460 2.80GHz
16 GB RAM
64位Windows Server 2008 Enterprise

我知道如果不看完整个代码就无法解决问题,但我很遗憾我无法发布代码.相反,我正在寻找一个让我走向某个方向的想法.但是,我们很乐意分享解决此问题的任何其他信息.

感谢大家的帮助!

.net client

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

WPF:如何启用命令?

我不知道为什么只有在ListView中选择了一个项目时才启用我的上下文菜单中的添加项目.有人知道为什么吗?

这是我的XAML代码

    <Window x:Class="Vokabular1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid HorizontalAlignment="Stretch" Name="grid" VerticalAlignment="Stretch">
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>

            <ListView Grid.Column="0" HorizontalAlignment="Stretch" Margin="10,10,10,10" Name="listView" VerticalAlignment="Stretch">
                <ListView.View>
                    <GridView />
                </ListView.View>
                <ListView.CommandBindings>
                    <CommandBinding Command="New" 
                        Executed="CommandBinding_Executed" 
                        CanExecute="CommandBinding_CanExecute" />
                </ListView.CommandBindings>
                <ListView.ContextMenu>
                    <ContextMenu>
                        <MenuItem Name="Add" Header="_Add"    Command="New" />
                        <MenuItem Header="Delete" Command="Delete" IsEnabled="True" />
                    </ContextMenu>
                </ListView.ContextMenu>
                <ListViewItem />  
            </ListView>            
        </Grid>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

窗口的方法是:

private void CommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
    MessageBox.Show("ok");
}

private void CommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
    e.CanExecute = true;
    e.Handled = true; …
Run Code Online (Sandbox Code Playgroud)

c# wpf

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

调用私有方法保留调用堆栈

我正试图找到"打破非公开方法"的解决方案.

我只是想调用RuntimeMethodInfo.InternalGetCurrentMethod(...),传递我自己的参数(所以我可以实现GetCallingMethod()),或直接RuntimeMethodInfo.InternatGetCurrentMethod(ref StackCrawlMark.LookForMyCaller)在我的日志记录例程中使用.GetCurrentMethod实施方式如下:

[MethodImpl(MethodImplOptions.NoInlining)] 
public static MethodBase GetCurrentMethod() 
{     
    StackCrawlMark lookForMyCaller = StackCrawlMark.LookForMyCaller;     
    return RuntimeMethodInfo.InternalGetCurrentMethod(ref lookForMyCaller); 
}
Run Code Online (Sandbox Code Playgroud)

InternalGetCurrentMethod声明在哪里:内部:-).

我使用反射调用方法没有问题,但这会弄乱调用堆栈,这只是必须要保留的一件事,否则它会破坏它的目的.

我的堆栈跟踪保持接近原始的几率是多少(至少在允许的StackCrawlMarks 的距离内,这是LookForMe,LookForMyCallerLookForMyCallersCaller.是否有一些复杂的方法来实现我想要的?

c# reflection methods private

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

如何下载 MQL4 IDE 和编辑器?

各位。我是 MQL4 (Metaquotes Languages 4.0) 的新手。我真的很想下载这种语言的 IDE 和编程工具,但我不能。我无法下载这个,因为我找不到任何下载链接。

如果你知道这件事,请告诉我。

非常感谢。

平阮

metaprogramming metatrader4

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

这意味着克隆GitHub存储库是什么意思?

我想用我的应用程序使用Facebook.我在developer.facebook.com上看到了这个

安装XCode

安装Git

克隆GitHub存储库:
git clone git://github.com/facebook/facebook-ios-sdk.git

我已经安装了XCode和Git.克隆GitHub存储库意味着什么:
git clone git://github.com/facebook/facebook-ios-sdk.git
我该怎么做呢.

iphone xcode github objective-c ios-4.2

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

在PHP闭包中注入代码

我有一个已经定义的闭包,我想在执行它时注入代码.这是一个例子:

$predefined = "print 'my predefined injected code<br />';";
$closure = function () {
  print 'hello<br />';
};
call_user_func_array($closure, array());
// output : hello
Run Code Online (Sandbox Code Playgroud)

我想混合2个代码:一个预定义的代码和一个代码的代码.修改后,我希望我的闭包看起来像这样

$closure = function () {
  print 'my predefined injected code<br />';
  print 'hello<br />';
};
Run Code Online (Sandbox Code Playgroud)

在执行之前是否可以在闭包中插入一些代码?

注意:我不能使用将代码作为字符串的"create_function",因此可以轻松修改.闭包已经定义并以某种方式定义(通过一个带回调arg而不是字符串arg的函数).

谢谢你的帮助.


编辑:

这是解决方案

function hackClosure($closure, $inject_code)
{
    $reflection = new ReflectionFunction($closure);
    $tmp = $reflection->getParameters();
    $args = array();
    foreach ($tmp as $a) array_push($args, '$'.$a->getName() . ($a->isDefaultValueAvailable() ? '=\''.$a->getDefaultValue().'\'' : ''));
    $file = new SplFileObject($reflection->getFileName());
    $file->seek($reflection->getStartLine()-1);
    $code = '';
    while …
Run Code Online (Sandbox Code Playgroud)

php oop closures

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

Subversion合并

我有一个包含当前版本代码的主干,其中包含各种错误修复程序,以及一个包含系统下一版本的各种新功能的分支.我正在尝试将来自主干的错误修复程序合并到准备测试的分支中,但我遇到了一些问题.

我正在使用AnkhSVN并选择"合并一系列修订"选项.提出了两个问题

  • "没有未提交的修改"
  • "没有换孩子"

我没有待定的更改.这可能是其他用户有未提交更改的问题吗?

svn ankhsvn

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

引用不同类型的Func

我有一个单例,可以注册一个函数来解析每种类型的id值:

public void RegisterType<T>(Func<T, uint> func)
Run Code Online (Sandbox Code Playgroud)

例如:

RegisterType<Post>(p => p.PostId );
RegisterType<Comment>(p => p.CommentId );
Run Code Online (Sandbox Code Playgroud)

然后我想解决一个对象的id,如下所示:

GetObjectId(myPost);
Run Code Online (Sandbox Code Playgroud)

GetObjectId定义的位置

public uint GetObjectId(object obj)
Run Code Online (Sandbox Code Playgroud)

问题是,我如何存储每个func的引用以便最近调用它.问题是每个func都有不同的T类型,我不能做这样的事情:

private Dictionary<Type, Func<object, uint>> _typeMap;
Run Code Online (Sandbox Code Playgroud)

怎么解决呢?表达树?

关于Ezequiel

c# lambda expression-trees .net-3.5

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