调试时我的代码运行正常,但是一旦运行它就会崩溃

时间:2016-11-21 06:54:19

标签: c++

我被要求由我的教授构建一个K排序数组,然后使用minheap对其进行排序。 k排序的数组基本上是一个数组,其中每个元素最多K个位置,远离数组按升序完全排序的位置。例如,如果K = 3,则位置i = 8处的元素可以位于完全排序的阵列中的位置5,6,7,8,9,10或11处于问题的第一部分中。 要求:

  1. 允许用户输入多个(N)元素和数字K.

  2. 根据用户输入生成K排序数组(可以生成多个K排序数组;随机选择一个)。显示它。

  3. 经过严格的思考后,我为K排序构建了以下代码:

    <table ng-table="vm.tableParams" class="table" show-filter="true">
        <tr ng-repeat="user in $data">
            <td title="'Name'" filter="{ name: 'text'}" sortable="'name'">
                {{user.name}}</td>
            <td title="'Age'" filter="{ age: 'number'}" sortable="'age'">
                {{user.age}}</td>
        </tr>
    </table>

    以下是头文件:

     //determine the uri path then add route path based upon uri
    $app->add(function (Request $request, Response $response, $next) {
        if (strpos($request->getAttribute('route'), "/user") === 0) {
            require_once('controllers/users/routes.php');
        } elseif (strpos($request->getUri()->getPath(), "/public") === 0) {
            require_once('controllers/public/routes.php');
        } elseif (strpos($request->getUri()->getPath(), "/brand") === 0) {
            require_once('controllers/brands/routes.php');
        }elseif (strpos($request->getUri()->getPath(), "/admin") === 0) {
            require_once('controllers/admin/routes.php');
        }elseif (strpos($request->getUri()->getPath(), "/") === 0) {
            require_once('routes.php');
        }
    
        $response = $next($request, $response);
        return $response;
    });
    

    有人可以帮助我弄清楚为什么我的代码在运行时崩溃并在我调试时运行正常。这是内存泄漏问题吗?我甚至尝试删除arr,arr2和清除arr3,但这不起作用(代码仍然是兑现)。非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

标题中的声明int* arr=new int [N];是错误的。您无法在此为阵列分配内存,因为您还不知道N的值。只有cin>>N;函数中的kSortedArray:: displayKSorted后才会知道该值。因此,您需要在那里分配内存:

void kSortedArray:: displayKSorted()
{
    cout<<"Please enter the no. of elements you want to KSort: ";
    cin>>N;

    arr = new int [N];                     // <<< add this line

    cout<<"Please enter the value for K: ";
    cin>>K;
    int i=0;
    ...

部首:

   ...
   private:
        int N=0;
        int K=0;
        int* arr;    // =new int [N];         <<< remove the allocation
        createKSorted();
        void insertion_sort(int arr[],int length);
        ...

免责声明:这是未经测试的非错误检查代码,可能存在更多问题。