小编kmo*_*ote的帖子

在分配的内存上*不*使用free()是否可以?

我正在学习计算机工程,我有一些电子课程.我听到了,从我的两个教授(这些课程),有可能避免使用的free()功能(后malloc(),calloc()等),因为分配可能不会被再次使用的存储空间分配等内存.也就是说,例如,如果您分配4个字节然后释放它们,您将有4个字节的空间可能不会再次分配:您将有一个漏洞.

我认为这很疯狂:你不能拥有一个非玩具程序,你可以在堆上分配内存而不释放它.但是我没有足够的知识来解释为什么它如此重要以至于每一个都malloc()必须有一个free().

那么:在没有使用的情况下,是否有可能适合malloc()使用free()?如果没有,我该如何向我的教授解释这一点?

c c++ heap memory-leaks memory-management

83
推荐指数
5
解决办法
7793
查看次数

SQL Server Express(2012)和LocalDB之间有区别吗?

在他出色的流行比较图表中,ErikEJ区分了SQL Server Express 2012SQL Server 2012 LocalDB.但是,我在MSDN文档中的其他任何地方都找不到这样的区别(在官方MS SS12书籍MSDN SQL Edition比较页面中甚至没有提到"LocalDB" .)这使我怀疑Express和LocalDB并不是ErikEJ建议的两个独立的产品,而只是两个不同的术语同一件事(这可以解释为什么,在这个MSDN页面上,它被称为"SQL Server 2012 Express LocalDB ").

如果产品之间确实存在差异,那么有人可以指点一些比较它们的官方文档吗?

sql-server localdb

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

将BOOST_FOREACH与std :: map一起使用

我想使用BOOST_FOREACH迭代std :: map并编辑值.我不太明白.

typedef std::pair<int, int> IdSizePair_t;
std::map<int,int> mmap;    
mmap[1] = 1;
mmap[2] = 2;
mmap[3] = 3;
BOOST_FOREACH( IdSizePair_t i, mmap )
    i.second++;
// mmap should contain {2,3,4} here
Run Code Online (Sandbox Code Playgroud)

当然,这并没有改变任何东西,因为我没有通过引用迭代.所以我替换了这一行(根据Boost文档中的示例):

BOOST_FOREACH( IdSizePair_t &i, mmap )
Run Code Online (Sandbox Code Playgroud)

我得到编译器错误:

error C2440: 'initializing' : 
cannot convert from 'std::pair<_Ty1,_Ty2>' to 'IdSizePair_t &'
    with
    [
        _Ty1=const int,
        _Ty2=int
    ]
Run Code Online (Sandbox Code Playgroud)

有什么建议?

c++ foreach maps boost std

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

使用BooleanToVisibilityConverter的WPF MVVM隐藏按钮

在我的WPF应用程序中,我试图根据用户选择的选项更改按钮的可见性.在加载时,我希望其中一个按钮不可见.我正在使用内置值转换器BooleanToVisibilityConverter.然而,由于按钮在加载时出现,因此无法正常工作.我已将属性更改为true和false,没有任何区别.下面是我的代码,我看不出我错过了什么?

我的View模型中的属性

 bool ButtCancel
    {
        get { return _buttCancel; }
        set
        {
            _buttCancel = value;
            OnPropertyChanged("ButtCancel");
        }
    }
Run Code Online (Sandbox Code Playgroud)

在我的app.xaml中

 <Application.Resources>       
    <BooleanToVisibilityConverter x:Key="BoolToVis"/>
Run Code Online (Sandbox Code Playgroud)

在我的MainWindow.xaml中

 <Button Grid.Column="2" 
      Command="{Binding CommandButtProgressCancel}" 
      Content="Cancel" 
      Visibility="{Binding ButtCancel, Converter={StaticResource BoolToVis}}"
      IsEnabled="{Binding ButtCancelEnabled}" 
      Height="50" Width="120" 
      HorizontalAlignment="Center" 
      VerticalAlignment="Center" Margin="0,0,50,20"/>
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml mvvm

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

c#中的装饰器模式和扩展方法

在首先描述我的问题之前,我想定义Decorator和Extension方法Decorator的定义

动态地将附加职责附加到对象.装饰器为子类化提供了灵活的替代扩展功能

扩展方法

扩展方法使您可以向现有类型"添加"方法,而无需创建新的派生类型,重新编译或以其他方式修改原始类型

我在c#中有以下代码片段

public interface IMyInterface
{
    void Print();
}

public static class Extension
{
    public static void PrintInt(this IMyInterface myInterface, int i)
    {
        Console.WriteLine
            ("Extension.PrintInt(this IMyInterface myInterface, int i)");
    }

    public static void PrintString(this IMyInterface myInterface, string s)
    {
        Console.WriteLine
            ("Extension.PrintString(this IMyInterface myInterface, string s)");
    }
}

public class Imp : IMyInterface
{
    #region IMyInterface Members

    public void Print()
    {
        Console.WriteLine("Imp");
    }

    #endregion
}

class Program
{
    static void Main(string[] args)
    {
        Imp obj = …
Run Code Online (Sandbox Code Playgroud)

c# design-patterns

17
推荐指数
4
解决办法
8721
查看次数

在WPF DataGrid中选择绑定

我在我的Model(Class X)布尔属性中:IsSelected,链接到WPF DataGrid如下:

<DataGrid  SelectedIndex="{Binding SelectedXIndex,Mode=TwoWay}" 
           DataContext="{Binding MyViewModel}" 
           ItemsSource="{Binding ListX}" AutoGenerateColumns="False">
     <DataGrid.RowStyle>
         <Style TargetType="{x:Type DataGridRow}">
             <Setter Property="IsSelected" 
                     Value="{Binding IsSelected, Mode=TwoWay, 
                             UpdateSourceTrigger=PropertyChanged}"/>
         </Style>
     </DataGrid.RowStyle>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

ListX- ObservableCollection

IsSelecte- 调用NotifyPropertyChange

它很棒.

但是当我有很多行时,我需要滚动查看它们,然后按下运行以下功能的"全选"按钮,他只选择了一些行而不是全部:(尽管所有名单上的IsSelected是真的)

public void SelectAll()
{
    ListX.All(c => c.IsSelected = true);
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么会这样?

wpf binding datagrid mvvm

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

我可以在T-SQL中使用什么来进行无操作?

在T-SQL中有什么好的无操作?我想将它用作样板代码片段中的占位符.例如,如果我正在查询/ udf并且有类似这样的内容:

IF @parm = 1
    BEGIN
    END
IF @parm = 2
    BEGIN
    END
Run Code Online (Sandbox Code Playgroud)

......我会收到一条__CODE__消息.我可以在那之间抛出会使编译器静音(即可执行)?

sql t-sql syntax

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

为什么/什么时候将运算符指定为显式是重要的?

我从另一个问题(稍加修改)中借用了以下代码,以便在我的代码中使用:

internal class PositiveDouble 
{
      private double _value;
      public PositiveDouble(double val) 
      {
          if (val < 0)
              throw new ArgumentOutOfRangeException("Value needs to be positive");
          _value = val;
      }

      // This conversion is safe, we can make it implicit
      public static implicit operator double(PositiveDouble d)
      {
          return d._value;
      }
      // This conversion is not always safe, so we're supposed to make it explicit
      public static explicit operator PositiveDouble(double d)
      {
          return new PositiveDouble(d); // this constructor might throw exception
      } …
Run Code Online (Sandbox Code Playgroud)

c# implicit-conversion explicit-conversion

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

如何在 Visual Studio 编辑器中查看列对齐的 CSV 文件

在 Visual Studio 中打开 .csv 文件会产生无法阅读的混乱。有什么方法可以设置 Visual Studio 以自动格式化列中的这些文件(可以说是“网格视图”),以便我可以直接在 IDE 中编辑它们?是否有任何技巧、变通方法或扩展可以使这些文件更易于阅读?

(VSCode 对这类事情看起来是一个很棒的扩展,但可惜,它不能在 Visual Studio Pro/Enterprise 中工作。此外,BeyondCompare4 会自动执行此操作,Notepad++ 也有支持此功能的 TextFX 插件。有没有人为 VS 制作过这样的插件?)

(更新:我在这里创建了一个功能请求。如果你对这张票投了赞成票,请投票。)

csv visual-studio-extensions visual-studio-2017

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

TortoiseSVN Tree Conflict:无法选择远程文件

这是场景:

  • User1,Branch1:添加"abc.def"; 提交.
  • User2,Branch2:添加"abc.def"(文件名相同,但文件中有更多细节); 提交.

现在User1想要合并"abc.def"文件的更新版本.所以(使用TortoiseSVN 1.7.10),User1在Branch1的工作副本中启动,选择Merge...- > Reintegrate a Branch,然后选择Branch2并选择Merge.可以预见的是,"树冲突"的结果是这样的:

最后一次合并操作尝试从Branch2添加文件'abc.def',但该文件已在本地添加.你想如何解决这个冲突?

但唯一的选择是标有单个按钮Keep the local file.没有选择远程文件的选项,这是User1真正想要的.

在此输入图像描述

我在这里做错了什么,我该如何解决?更具体地说,如何将User2的文件版本导入Branch1?

(当然,我确信User1可以在合并之前手动删除该文件,但这会消除User1可能想要保留的任何历史记录.此外,它只是一个笨重的工作流程,特别是在这种困境中存在大量文件时.)

不幸的是,在TortoiseSVN关于树冲突的文档中甚至没有提到这种情况

更新:

除了选择" Reintegrate a Branch"我还试过" Merge a Range of Revisions"和" Merge two different trees".对于后一种情况,我选择远程分支(Branch2)作为"开始",将本地分支作为目标(Branch1; 在添加文件之前选择修订版.)我在所有情况下得到了相同的结果:树冲突没有选择文件的User2版本的选项.

更新#2:

根据文档,应该在"合并进度对话框中有一个名为"的复选框Merge non-interactive,如果未选中,则应该在合并期间打开"合并冲突回调对话框".但是,我在合并过程中找不到任何此类复选框.它在哪里?

tortoisesvn merge tree-conflict

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