问题列表 - 第24351页

重载删除和检索大小?

我目前正在用C++编写一个小的自定义内存分配器,并希望将它与运算符重载new/ 一起使用delete.无论如何,我的内存分配器基本上检查请求的内存是否超过某个阈值,如果是,则使用malloc分配请求的内存块.否则,内存将由一些fixedPool分配器提供.这通常有效,但对于我的释放函数看起来像这样:

void MemoryManager::deallocate(void * _ptr, size_t _size){
    if(_size > heapThreshold)
        deallocHeap(_ptr);
    else 
        deallocFixedPool(_ptr, _size);
}
Run Code Online (Sandbox Code Playgroud)

所以我需要提供指向的块的大小,从正确的位置解除分配.

现在的问题是delete关键字没有提供任何关于已删除块的大小的提示,所以我需要这样的东西:

void operator delete(void * _ptr, size_t _size){ 
    MemoryManager::deallocate(_ptr, _size); 
}
Run Code Online (Sandbox Code Playgroud)

但据我所知,没有办法确定删除操作符内的大小.-如果我想保持现在的状态,我是否必须自己保存内存块的大小?

c++ memory-management

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

在DDD方法中,此示例是否正确建模?

刚刚在SO上创建了一个acc来问这个:)

假设这个简化示例:构建Web应用程序来管理项目......
应用程序具有以下要求/规则.

1)用户应该能够创建插入项目名称的项目.
2)项目名称不能为空.
3)两个项目不能具有相同的名称.

我使用的是4层架构(用户界面,应用程序,域,基础架构).
在我的应用层上,我有以下ProjectService.cs类:

public class ProjectService
{
    private IProjectRepository ProjectRepo { get; set; }

    public ProjectService(IProjectRepository projectRepo)
    {
        ProjectRepo = projectRepo;
    }

    public void CreateNewProject(string name)
    {
        IList<Project> projects = ProjectRepo.GetProjectsByName(name);
        if (projects.Count > 0) throw new Exception("Project name already exists.");

        Project project = new Project(name);
        ProjectRepo.InsertProject(project);
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的域层,我有Project.cs类和IProjectRepository.cs接口:

public class Project
{
    public int ProjectID { get; private set; }
    public string Name { get; private set; }

    public Project(string name)
    {
        ValidateName(name); …
Run Code Online (Sandbox Code Playgroud)

c# domain-driven-design repository repository-pattern

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

WinForms文本框的"KeyPress"事件丢失了?

我试图在文本框中添加"KeyPress"事件(WinForm)

this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(CheckKeys);
Run Code Online (Sandbox Code Playgroud)

而这里是'CheckKeys':

private void CheckKeys(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
    if (e.KeyChar == (char)13)
    {
        // Enter is pressed - do something

    }
}
Run Code Online (Sandbox Code Playgroud)

这里的想法是,一旦文本框处于焦点并按下"Enter"按钮,就会发生一些事情......

但是,我的机器找不到'KeyPress'事件.我的代码有问题吗?

更新:

我也试过把KeyDown而不是KeyPress:

private void textBox1_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{

    if (e.Key == Key.Return)

        // Enter is pressed - do something
    }
}
Run Code Online (Sandbox Code Playgroud)

仍然没有工作......

c# textbox keyboard-events winforms

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

删除冗余条目,scala方式

编辑:添加了一个事实,即列表已排序,并且实现"重复"会产生误导,将其替换为标题中的"冗余".

我有一个条目的排序列表,说明给定时间间隔内的生产值.以后声明完全相同的值的条目不会添加任何信息,可以安全地省略.

case class Entry(minute:Int, production:Double)
val entries = List(Entry(0, 100.0), Entry(5, 100.0), Entry(10, 100.0), Entry(20, 120.0), Entry(30, 100.0), Entry(180, 0.0))
Run Code Online (Sandbox Code Playgroud)

尝试使用scala 2.8集合函数,到目前为止,我有这个工作实现:

entries.foldRight(List[Entry]()) {
  (entry, list) => list match {
    case head :: tail if (entry.production == head.production) => entry :: tail
    case head :: tail => entry :: list
    case List() => entry :: List()
  }
}
res0: List[Entry] = List(Entry(0,100.0), Entry(20,120.0), Entry(30,100.0), Entry(180,0.0))
Run Code Online (Sandbox Code Playgroud)

任何意见?我错过了一些斯卡拉魔法吗?

scala

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

C++,构造函数限制

我正在研究C++,我无法理解下面粗体句子的含义:

来自IBM手册:

以下限制适用于构造函数和析构函数:

  • 构造函数和析构函数没有返回类型,也不能返回值.
  • 引用和指针不能用于构造函数和析构函数,因为它们的地址不能被使用.
  • 无法使用关键字virtual声明构造函数.
  • 构造函数和析构函数不能声明为static,const或volatile.
  • 联合不能包含具有构造函数或析构函数的类对象.

你能给我举个例子吗?谢谢!

c++ constructor

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

更改django中的模型会导致数据库损坏?

我在models.py文件中添加和删除了字段,然后运行manage.py syncdb.通常我必须退出shell并在syncdb执行任何操作之前重新启动它.然后即使在那之后,我在尝试访问管理页面时遇到错误,似乎我添加的某些新字段仍未显示在模型中:

Caught an exception while rendering: no such column: mySite_book.Title
Run Code Online (Sandbox Code Playgroud)

python django django-models django-admin

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

计算十亿数字的中位数

如果您有十亿个数字和一百台计算机,那么找到这些数字的中位数的最佳方法是什么?

我的一个解决方案是:

  • 在计算机之间平均分割集合.
  • 排序他们.
  • 找到每组的中位数.
  • 对中位数进行排序.
  • 从最低到最高中位数一次合并两组.

如果我们m1 < m2 < m3 ...先进行合并Set1,Set2并在结果集中我们可以丢弃低于Set12(合并)中位数的所有数字.所以在任何时候我们都有相同大小的集合.顺便说一下,这不能以并行方式完成.有任何想法吗?

algorithm distributed-computing

123
推荐指数
8
解决办法
4万
查看次数

android中的自定义进度对话框?

我按照文档中customdialog示例中的步骤操作,但是我得到了这个例外.有任何想法吗?

04-03 18:50:28.787: VERBOSE/Bru_Press_Tab(750): Exception in Tabsjava.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.brown/com.example.brown.Bru_Press_MostRecent}: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
Run Code Online (Sandbox Code Playgroud)

android progressdialog

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

C#对象(2个数字)执行2次计算

我有几个关于创建对象(2个值)以及如何"调用"它的问题.

使用以下内容初始化对象:

Tweetal t1, t2, t3, t4, t5, t6;
t1 = new Tweetal();      //a: 0 , b = 0
t2 = new Tweetal(-2);    //a: -2, b = -2
t3 = new Tweetal(5, 17); //a: 5, b = 17
t4 = new Tweetal(t3);    //a:5, b = 17

Console.Write("t1 = " + t1);
Console.Write("\tt2 = " + t2);
Console.Write("\tt3 = " + t3);
Console.Write("\tt4 = " + t4);
Console.WriteLine("\n");
t1 = t1.Som(t2);
t4 = t2.Som(t2);
//......
Run Code Online (Sandbox Code Playgroud)

现在2个事情要与该对象做正在服用的SUM和SUMNumber:总:t4 = t2.sum(t3);(这将导致在T4:一个:3(-2 + …

c#

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

如何在C#中解析UUID

在Web服务成功后,我收到了UUID.

即"C3D668DC-1231-3902-49318B046AD48A5F"

我需要验证这一点.我试过了

Guid responseId = new Guid("C3D668DC-1231-3902-49318B046AD48A5F");

但它没有解析?是否有我应该使用的另一种.net方法.

c#

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